Changelog
### 5.2.0
```
=====
:release-date: 2023-11-06 10:55 A.M. UTC+6:00
:release-by: Asif Saif Uddin
- Added python 3.12 and drop python 3.7 (423).
- Test vine 5.1.0 (424).
- Set an explicit timeout on SSL handshake to prevent hangs.
- Add MessageNacked to recoverable errors.
- Send heartbeat frames more often.
.. _version-5.1.1:
```
### 5.1.1
```
=====
:release-date: 2022-04-17 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://data.safetycli.com/changelogs/amqp/
- Repo: http://github.com/celery/py-amqp
Changelog
### 0.31.3
```
---------------------------
Bugs fixed:
- wrong type annotation of `errors` in `wrap_errors` (PR 229 by laazy)
- tests were failing under Python 3.13 (issue 228 by mgorny)
- regression: can't set argument name with `dest` via decorator
(issue 224 by mathieulongtin)
```
### 0.31.2
```
---------------------------
Bugs fixed:
- broken support for `Optional[List]` (but not `Optional[list]`), a narrower
case of the problem fixed earlier (issue 216).
```
### 0.31.1
```
---------------------------
Bugs fixed:
- broken support for type alias `List` (issue 216).
Enhancements:
- cleaned up the README, rearranged other documentation.
```
### 0.31.0
```
---------------------------
Breaking changes:
- The typing hints introspection feature is automatically enabled for any
command (function) which does **not** have any arguments specified via `arg`
decorator.
This means that, for example, the following function used to fail and now
it will pass::
def main(count: int):
assert isinstance(count, int)
This may lead to unexpected behaviour in some rare cases.
- A small change in the legacy argument mapping policy `BY_NAME_IF_HAS_DEFAULT`
concerning the order of variadic positional vs. keyword-only arguments.
The following function now results in ``main alpha [args ...] beta`` instead of
``main alpha beta [args ...]``::
def main(alpha, *args, beta): ...
This does **not** concern the default name mapping policy. Even for the
legacy one it's an edge case which is extremely unlikely to appear in any
real-life application.
- Removed the previously deprecated decorator `expects_obj`.
Enhancements:
- Added experimental support for basic typing hints (issue 203)
The following hints are currently supported:
- ``str``, ``int``, ``float``, ``bool`` (goes to ``type``);
- ``list`` (affects ``nargs``), ``list[T]`` (first subtype goes into ``type``);
- ``Literal[T1, T2, ...]`` (interpreted as ``choices``);
- ``Optional[T]`` AKA ``T | None`` (currently interpreted as
``required=False`` for optional and ``nargs="?"`` for positional
arguments; likely to change in the future as use cases accumulate).
The exact interpretation of the type hints is subject to change in the
upcoming versions of Argh.
- Added `always_flush` argument to `dispatch()` (issue 145)
- High-level functions `argh.dispatch_command()` and `argh.dispatch_commands()`
now accept a new parameter `old_name_mapping_policy`. The behaviour hasn't
changed because the parameter is `True` by default. It will change to
`False` in Argh v.0.33 or v.1.0.
Deprecated:
- the `namespace` argument in `argh.dispatch()` and `argh.parse_and_resolve()`.
Rationale: continued API cleanup. It's already possible to mutate the
namespace object between parsing and calling the endpoint; it's unlikely that
anyone would need to specify a custom namespace class or pre-populate it
before parsing. Please file an issue if you have a valid use case.
Other changes:
- Refactoring.
```
### 0.30.5
```
---------------------------
Bugs fixed:
- A combination of `nargs` with a list as default value would lead to the
values coming from CLI being wrapped in another list (issue 212).
Enhancements:
- Argspec guessing: if `nargs` is not specified but the default value
is a list, ``nargs="*"`` is assumed and passed to argparse.
```
### 0.30.4
```
---------------------------
There were complaints about the lack of a deprecation cycle for the legacy name
mapping policy. This version addresses the issue:
- The handling introduced in v.0.30.2 (raising an exception for clarity)
is retained for cases when no name mapping policy is specified but function
signature contains defaults in non-kwonly args **and kwonly args are also
defined**::
def main(alpha, beta=1, *, gamma=2): error — explicit policy required
In a similar case but when **kwonly args are not defined** Argh now assumes
the legacy name mapping policy (`BY_NAME_IF_HAS_DEFAULT`) and merely issues
a deprecation warning with the same message as the exception mentioned above::
def main(alpha, beta=2): `[-b BETA] alpha` + DeprecationWarning
This ensures that most of the old scripts still work the same way despite the
new policy being used by default and enforced in cases when it's impossible
to resolve the mapping conflict.
Please note that this "soft" handling is to be removed in version v0.33
(or v1.0 if the former is not deemed necessary). The new name mapping policy
will be used by default without warnings, like in v0.30.
```
### 0.30.3
```
---------------------------
Bugs fixed:
- Regression: a positional argument with an underscore used in `arg` decorator
would cause Argh fail on the assembling stage. (208)
```
### 0.30.2
```
---------------------------
Bugs fixed:
- As reported in 204 and 206, the new default name mapping policy in fact
silently changed the CLI API of some scripts: arguments which were previously
translated as CLI options became optional positionals. Although the
instructions were supplied in the release notes, the upgrade may not
necessarily be intentional, so a waste of users' time is quite likely.
To alleviate this, the default value for `name_mapping_policy` in standard
functions has been changed to `None`; if it's not specified, Argh falls back
to the new default policy, but raises `ArgumentNameMappingError` with
detailed instructions if it sees a non-kwonly argument with a default value.
Please specify the policy explicitly in order to avoid this error if you need
to infer optional positionals (``nargs="?"``) from function signature.
```
### 0.30.1
```
---------------------------
Bugs fixed:
- Regression: certain special values in argument default value would cause an
exception (204)
Enhancements:
- Improved the tutorial.
- Added a more informative error message when the reason is likely to be
related to the migration from Argh v0.29 to a version with a new argument
name mapping policy.
Other changes:
- Added `py.typed` marker file for :pep:`561`.
```
### 0.30.0
```
---------------------------
Backwards incompatible changes:
- A new policy for mapping function arguments to CLI arguments is used by
default (see :class:`argh.assembling.NameMappingPolicy`).
The following function does **not** map to ``func foo [--bar]`` anymore::
def func(foo, bar=None):
...
Since this release it maps to ``func foo [bar]`` instead.
Please update the function this way to keep `bar` an "option"::
def func(foo, *, bar=None):
...
If you cannot modify the function signature to use kwonly args for options,
please consider explicitly specifying the legacy name mapping policy::
set_default_command(
func, name_mapping_policy=NameMappingPolicy.BY_NAME_IF_HAS_DEFAULT
)
- The name mapping policy `BY_NAME_IF_HAS_DEFAULT` slightly deviates from the
old behaviour. Kwonly arguments without default values used to be marked as
required options (``--foo FOO``), now they are treated as positionals
(``foo``). Please consider the new default policy (`BY_NAME_IF_KWONLY`) for
a better treatment of kwonly.
- Removed previously deprecated features (184 → 188):
- argument help string in annotations — reserved for type hints;
- `argh.SUPPORTS_ALIASES`;
- `argh.safe_input()`;
- previously renamed arguments for `add_commands()`: `namespace`,
`namespace_kwargs`, `title`, `description`, `help`;
- `pre_call` argument in `dispatch()`. The basic usage remains simple but
more granular functions are now available for more control.
Instead of this::
argh.dispatch(..., pre_call=pre_call_hook)
please use this::
func, ns = argh.parse_and_resolve(...)
pre_call_hook(ns)
argh.run_endpoint_function(func, ns, ...)
Deprecated:
- The `expects_obj` decorator. Rationale: it used to support the old,
"un-pythonic" style of usage, which essentially lies outside the scope of
Argh. If you are not using the mapping of function arguments onto CLI, then
you aren't reducing the amount of code compared to vanilla Argparse.
- The `add_help_command` argument in `dispatch()`.
Rationale: it doesn't add much to user experience; it's not much harder to
type ``--help`` than it is to type ``help``; moreover, the option can be
added anywhere, unlike its positional counterpart.
Enhancements:
- Added support for Python 3.12.
- Added type annotations to existing Argh code (185 → 189).
- The `dispatch()` function has been refactored, so in case you need finer
control over the process, two new, more granular functions can be used:
- `endpoint_function, namespace = argh.parse_and_resolve(...)`
- `argh.run_endpoint_function(endpoint_function, namespace, ...)`
Please note that the names may change in the upcoming versions.
- Configurable name mapping policy has been introduced for function argument
to CLI argument translation (191 → 199):
- `BY_NAME_IF_KWONLY` (default and recommended).
- `BY_NAME_IF_HAS_DEFAULT` (close to pre-v.0.30 behaviour);
Please check API docs on :class:`argh.assembling.NameMappingPolicy` for
details.
```
### 0.29.4
```
---------------------------
Bugs fixed:
- Test coverage reported as <100% when argcomplete is installed (187)
```
### 0.29.3
```
------------------------------
Technical releases for packaging purposes. No changes in functionality.
```
### 0.29.0
```
---------------------------
Backwards incompatible changes:
- Wrapped exceptions now cause ``dispatching.dispatch()`` to raise
``SystemExit(1)`` instead of returning without error. For most users, this
means failed commands will now exit with a failure status instead of a
success. (161)
Deprecated:
- Renamed arguments in `add_commands()` (165):
- `namespace` → `group_name`
- `namespace_kwargs` → `group_kwargs`
The old names are deprecated and will be removed in v.0.30.
Enhancements:
- Can control exit status (see Backwards Incompatible Changes above) when
raising ``CommandError`` using the ``code`` keyword arg.
Bugs fixed:
- Positional arguments should not lead to removal of short form of keyword
arguments. (115)
Other changes:
- Avoid depending on iocapture by using pytest's built-in feature (177)
```
### 0.28.1
```
---------------------------
- Fixed bugs in tests (171, 172)
```
### 0.28.0
```
---------------------------
A major cleanup.
Backward incompatible changes:
- Dropped support for Python 2.7 and 3.7.
Deprecated features, to be removed in v.0.30:
- `argh.assembling.SUPPORTS_ALIASES`.
- Always `True` for recent versions of Python.
- `argh.io.safe_input()` AKA `argh.interaction.safe_input()`.
- Not relevant anymore. Please use the built-in `input()` instead.
- argument `pre_call` in `dispatch()`.
Even though this hack seems to have been used in some projects, it was never
part of the official API and never recommended.
Describing your use case in the `discussion about shared arguments`_ can
help improve the library to accomodate it in a proper way.
.. _discussion about shared arguments: https://github.com/neithere/argh/issues/63
- Argument help as annotations.
- Annotations will only be used for types after v.0.30.
- Please replace any instance of::
def func(foo: "Foobar"):
with the following::
arg('-f', '--foo', help="Foobar")
def func(foo):
It will be decided later how to keep this functionality "DRY" (don't repeat
yourself) without conflicts with modern conventions and tools.
- Added deprecation warnings for some arguments deprecated back in v.0.26.
```
### 0.27.2
```
---------------------------
Minor packaging fix:
* chore: include file required by tox.ini in the sdist (155)
```
### 0.27.1
```
---------------------------
Minor building and packaging fixes:
* docs: add Read the Docs config (160)
* chore: include tox.ini in the sdist (155)
```
### 0.27.0
```
---------------------------
This is the last version to support Python 2.7.
Backward incompatible changes:
- Dropped support for Python 2.6.
Enhancements:
- Added support for Python 3.7 through 3.11.
- Support introspection of function signature behind the `wraps` decorator
(issue 111).
Fixed bugs:
- When command function signature contained ``**kwargs`` *and* positionals
without defaults and with underscores in their names, a weird behaviour could
be observed (issue 104).
- Fixed introspection through decorators (issue 111).
- Switched to Python's built-in `unittest.mock` (PR 154).
- Fixed bug with `skip_unknown_args=True` (PR 134).
- Fixed tests for Python 3.9.7+ (issue 148).
Other changes:
- Included the license files in manifest (PR 112).
- Extended the list of similar projects (PR 87).
- Fixed typos and links in documentation (PR 110, 116, 156).
- Switched CI to Github Actions (PR 153).
```
Links
- PyPI: https://pypi.org/project/argh
- Changelog: https://data.safetycli.com/changelogs/argh/
- Docs: https://pythonhosted.org/argh/
Changelog
### 4.11.1
```
This release was done to ensure that the unit tests are packaged along
with the released source. There are no functionality changes in this
release, but there are a few other packaging changes:
* The Japanese and Korean translations of the documentation are included.
* The changelog is now packaged as CHANGELOG, and the license file is
packaged as LICENSE. NEWS.txt and COPYING.txt are still present,
but may be removed in the future.
* TODO.txt is no longer packaged, since a TODO is not relevant for released
code.
```
### 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://data.safetycli.com/changelogs/beautifulsoup4/
Changelog
### 4.2.0
```
--------------------
- Update process.py to close during join only if process has completed.
- Adjust the __repr__ in ApplyResult.
- Remove python 3.7 from CI.
- Added Python 3.12 support.
- Fixed (co_positions): resolve issue caused by absence co_positions (395).
- Fixed: Replaced mktemp usage for Python 3 from python 2.
- Changed nose test to pytest (397) in Integration test.
- Changed nose dependency for unit test (383).
```
### 4.1.0
```
--------------------
- Fixed a python 2 to 3 compat issue which was missed earlier (374).
- Adde Python 3.11 primary support
```
### 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://data.safetycli.com/changelogs/billiard/
- Repo: https://github.com/celery/billiard
Changelog
### 1.8.2
```
-------------
Released 2024-05-06
- Simplify type for ``_async_wrapper`` and ``_sync_wrapper`` arguments.
:pr:`156`
```
### 1.8.1
```
-------------
Released 2024-04-28
- Restore identity handling for ``str`` and ``int`` senders. :pr:`148`
- Fix deprecated ``blinker.base.WeakNamespace`` import. :pr:`149`
- Fix deprecated ``blinker.base.receiver_connected import``. :pr:`153`
- Use types from ``collections.abc`` instead of ``typing``. :pr:`150`
- Fully specify exported types as reported by pyright. :pr:`152`
```
### 1.8.0
```
-------------
Released 2024-04-27
- Deprecate the ``__version__`` attribute. Use feature detection, or
``importlib.metadata.version("blinker")``, instead. :issue:`128`
- Specify that the deprecated ``temporarily_connected_to`` will be removed in
the next version.
- Show a deprecation warning for the deprecated global ``receiver_connected``
signal and specify that it will be removed in the next version.
- Show a deprecation warning for the deprecated ``WeakNamespace`` and specify
that it will be removed in the next version.
- Greatly simplify how the library uses weakrefs. This is a significant change
internally but should not affect any public API. :pr:`144`
- Expose the namespace used by ``signal()`` as ``default_namespace``.
:pr:`145`
```
### 1.7.0
```
-------------
Released 2023-11-01
- Fixed messages printed to standard error about unraisable exceptions during
signal cleanup, typically during interpreter shutdown. :pr:`123`
- Allow the Signal ``set_class`` to be customised, to allow calling of
receivers in registration order. :pr:`116`.
- Drop Python 3.7 and support Python 3.12. :pr:`126`
```
### 1.6.3
```
-------------
Released 2023-09-23
- Fix ``SyncWrapperType`` and ``AsyncWrapperType`` :pr:`108`
- Fixed issue where ``connected_to`` would not disconnect the receiver if an
instance of ``BaseException`` was raised. :pr:`114`
```
### 1.6.2
```
-------------
Released 2023-04-12
- Type annotations are not evaluated at runtime. typing-extensions is not a
runtime dependency. :pr:`94`
```
### 1.6.1
```
-------------
Released 2023-04-09
- Ensure that ``py.typed`` is present in the distributions (to enable other
projects to use Blinker's typing).
- Require typing-extensions > 4.2 to ensure it includes ``ParamSpec``.
:issue:`90`
```
### 1.6
```
-----------
Released 2023-04-02
- Add a ``muted`` context manager to temporarily turn off a signal. :pr:`84`
- ``int`` instances with the same value will be treated as the same sender,
the same as ``str`` instances. :pr:`83`
- Add a ``send_async`` method to allow signals to send to coroutine receivers.
:pr:`76`
- Update and modernise the project structure to match that used by the Pallets
projects. :pr:`77`
- Add an initial set of type hints for the project.
```
### 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://data.safetycli.com/changelogs/blinker/
Changelog
### 3.5
```
--------------------
* bugfixes:
- 8766 [component: bokehjs] box_select not working as active_drag for gridplot
- 12638 [component: bokehjs] Make Slider and Image available in BokehJS (JS only)
- 13515 [component: tests] CI unit-test on Python 3.9 fails systematically
- 13623 [component: bokehjs] [BUG] TextAreaInput resizable=False doesn't set resize: none
- 13720 [component: docs] Explanation is part of the code block in the latex_axis_labels_titles_labels example
- 13766 [component: bokehjs] [BUG] Dropdown doesnt update properly when .menu changed in 3.4
- 13771 [component: bokehjs] GMap example not showing glyphs
- 13787 [component: bokehjs] [BUG] DataTable inside Dialog
- 13789 [component: docs] [BUG] JS errors on Bokeh docs page
- 13824 [component: docs] activate pydata-sphinx-theme version banner
- 13834 [component: build] bokehjs' build fails on Windows with no explanation
- 13844 [component: build] [BUG] cannot build environment with pixi due to `firefox =>96` constraint
- 13848 Can't build extensions on Windows
- 13852 [component: bokehjs] [BUG] <b> and <strong> ignored in tooltips on Firefox
- 13878 [component: bokehjs] Bokeh.Plotting.figure.circle in bokehjs can't find `x` and `y` in a ColumnDataSource
- 13894 [component: bokehjs] `Tooltip` is initially attached to the DOM when it shouldn't be
- 13895 [component: bokehjs] Inner canvas layers need `overflow: hidden` after PR 13863
- 13897 [component: docs] [BUG] Typing of layouts.gridplot expects wrong type if ncols given
- 13902 Release build fails after PR 13901
- 13910 [component: tests] Tests/CI fail due to a regression in requests 2.32.0
- 13912 [component: bokehjs] [BUG] Dialog and Datatable don't get along well
- 13919 [component: bokehjs] [BUG] Bokeh 3.5 no longer allow custom properties for HTMLAttr
- 13923 [component: bokehjs] `Tooltip.content` doesn't rebuild views on change
- 13948 [component: docs] Version banner warns about unknown version on latest docs after 3.4.2 release
- 13951 [component: bokehjs] [BUG] Image Glyph causing tons of unnecessary calls to set_data
- 13822 [component: docs] remove consecutive "the" and fix typos in touched files
- 13879 [component: docs] Fix broken example in user guide advanced bokehjs
- 13884 [component: docs] silence warning in `theme_glyphs.py`
- 13908 [component: bokehjs] Fix `CartesianFrame`'s position and generalize `rendering_target()`
- 13926 [component: docs] Remove `blob/main` and `tree/master` from references
- 13927 [component: docs] update path in readme for server examples
- 13939 [component: docs] correct version string to match dev name from switcher.json
- 13940 [component: bokehjs] Fix initialization of `AjaxDataSource` and add tests
* features:
- 8289 [component: bokehjs] Permanent labels on Networkx graph
- 10439 [component: bokehjs] Activate wheel zoom by default with BokehJS
- 12185 [component: bokehjs] [FEATURE] Legend click events
- 12759 [component: bokehjs] [FEATURE] Support using CSS Variables in place of colors
- 13599 [FEATURE] Support formatters when using Template as HoverTool
- 13646 [FEATURE] Support BoxSelectTool-like range-setting for the RangeTool
- 13652 [FEATURE] `HTMLLabel` to support `stylesheets` and `css_classes`
- 13673 [FEATURE] Add Carbon Theme
- 13728 [FEATURE] Create option for wheel zoom tool to apply only to subplot nearest to the cursor position
- 13792 [component: server] [FEATURE] Allow bokeh server embed script to forward credentials
- 13861 [FEATURE] Support directory upload and clearing inputs from Python for `FileInput` widget
- 13935 [FEATURE] Allow extensions to register server side events
- 13936 [component: bokehjs] `AjaxDataSource.if_modified` not implemented
- 13467 [component: bokehjs] Add scale up boundary to datetimetickformatter
- 13810 Add support for `BoxAnnotation.inverted`
- 13890 Add support for server sent bokeh/model/UI events
- 13906 Add support for resize and drag handles to `BoxAnnotation`
* tasks:
- 11745 [component: docs] Need examples of callbacks with BokehJS
- 13791 [component: docs] [DOC] Boxplot example: some whiskers and vbar are rendered slightly asymmetrically and boldly
- 13831 [component: bokehjs] Tap tool default mode should select+unselect, but not append
- 13856 [component: build] Move sampledata files to pip/conda installable package
- 13634 Drop support for Python 3.9 and modernize the codebase
- 13686 [component: examples] added metadata to spans and strips example
- 13731 [component: examples] Add metadata to the data_models.py in plotting example
- 13735 [component: bokehjs] Improve type safety of DOM elements on `core/dom`
- 13747 [component: build] Upgrade to TypeScript 5.4
- 13770 [component: bokehjs] Remove legacy font measurement logic
- 13778 [component: bokehjs] Simplify eslint's configuration
- 13802 [component: build] Update bokehjs' dependencies and clear dependabot alerts
- 13839 [component: server] remove unnecessary code from ProtocolHandler.handle
- 13840 Upgrade to mypy 1.10.0 and ruff 0.4.2
- 13847 Upgrade CI actions to most recent versions
- 13860 Remove unused code from `bokeh.models.plots`
- 13862 [component: bokehjs] Redesign `CartesianFrame` as an internal model/view
- 13863 [component: bokehjs] Generalize bbox handling in UI views (DOM and canvas)
- 13877 [component: bokehjs] Replace `PlotView.renderer_view()` with generic `ViewQuery`
- 13882 Remove old deprecations
- 13889 [component: docs] Repository cloning issues
- 13892 Unify definitions of enums in `bokeh.core.enums`
- 13925 [component: build] Add `http://` to devtools server
- 13961 Final preparations for 3.5.0 release
```
### 3.4
```
--------------------
* bugfixes:
- 6826 [component: bokehjs] Tap events not registering during MouseMove events
- 8508 [component: bokehjs] Tap event latency
- 10782 [component: bokehjs] Typo in prelude.ts
- 11794 `BOKEH_DEV=true` assumes file resources when using the server
- 12088 [component: bokehjs] [BUG] Select widget has no value if only options are provided but the UI suggests otherwise
- 12616 [component: bokehjs] [BUG] installing bokehjs from npm doesn't pull in dependencies
- 12870 [component: bokehjs] [BUG] DatetimeTickFormatter strips leading 0 in "%H" format, works in " %H"
- 13071 [component: bokehjs] [BUG] Pinching zoom-in on touch devices
- 13131 [component: bokehjs] roots added in a callback are not displayed
- 13157 [component: bokehjs] Prevent blink when updating ImageURL source
- 13281 [component: bokehjs] font-size does not depend on --font-size css variable
- 13293 [component: bokehjs] [BUG] _hit_point() is broken in VAreaStep
- 13337 [component: bokehjs] [BUG] `output_notebook(resources=INLINE)` in jupyter lab does not load jquery
- 13362 [component: bokehjs] [BUG] Inconsistent handling of background and border fill alpha
- 13378 [component: bokehjs] [BUG] `Axis.major_label_overrides` being `{}` causing error in deserialization
- 13389 Unable to clone models with readonly properties
- 13421 `bokehjsdir(dev=True)` doesn't resolve `bokehjs/build` anymore
- 13441 [component: bokehjs] [BUG] filter.booleans doesn't trigger the re-render of the plot
- 13483 [component: bokehjs] [BUG] RangeTool does not respect target `max_interval`
- 13499 [BUG] Latex does not render in Notebook
- 13500 [component: bokehjs] [BUG] Box edit tool using all supported glyphs
- 13520 [component: bokehjs] [BUG] Template does not seem to render correctly in Firefox
- 13524 [component: docs] [BUG] Missing SRI hash for version 2.2.2
- 13525 [component: docs] [BUG] Unexpected attribute 'size' to Circle
- 13536 [component: bokehjs] ColumnDataSource.selected.indices incompatibility with CDSView.filter.indices [BUG]
- 13555 [component: bokehjs] [BUG] image hover value is wrong on inverted axes
- 13558 [component: build] Release build CI workflow fails
- 13563 [BUG] Return type of the Model.__new__ function is incorrect
- 13583 [component: tests] `minimal-deps` CI job fails with "coroutine was never awaited"
- 13598 [component: bokehjs] [BUG] Improve NaT support for HoverTool
- 13607 [component: bokehjs] [BUG] Multiple inline math elements in different axes causing axis labels to disappear
- 13611 [component: bokehjs] [BUG] Layout won’t update after curdoc().unhold()
- 13637 [BUG] Regression handling glyph border_radius that is a dict
- 13648 [component: bokehjs] [BUG] WebGL Rect with large corner radius rendered incorrectly
- 13678 [component: bokehjs] [BUG] Using tap tool makes image glyph disappear with webgl enabled
- 13679 [component: examples] Deprecation warning in notebook_embed.ipynb
- 13688 Useless error formatting can be sometimes costly in on_change setup
- 13698 [component: docs] Missing links in docs in "Third-party integrations" page
- 13716 Errors related to MIN_PREFERRED_MAX_WIDTH while building the docs
- 13717 [component: docs] Broken page in the docs
- 13729 [component: docs] [BUG] Documentation Missing space character in the command to enable jupyter server extension in jupyterLab docs.
- 13739 [component: docs] [BUG] Documentation: TypeScript in Custom Extensions section fails to compile
- 13743 VBox is not working in 3.4.0rc1
- 13755 [component: bokehjs] [BUG] Button does not updated when property is changed
- 13756 [component: bokehjs] `Tooltip` node positioning is wrong when the target is offset
- 13713 [component: build] Fix logic in plugin prelude
- 13718 [component: docs] add MathTextGlyph to imports
- 13737 [component: build] Include generated TS modules in extensions' build
- 13741 [component: bokehjs] Avoid spurious warning about Py/Js version mismatch
- 13758 [component: docs] fix broken link in first_steps_9.rst
* features:
- 2367 Different sizes not used for selection & nonselection glyphs
- 4284 Add attribution annotation
- 4416 Add support Title/Label bounding box padding
- 8153 [component: bokehjs] Feature Request: Hide some (but not all) tools from toolbar
- 8519 Overlapping attribution for labels tiles
- 8898 [component: bokehjs] Allow Select to accept non-string option values
- 9843 categorical slider
- 10317 [BUG] Cannot deselect with TapTool
- 10583 The empty_value property of EditTools needs generalizing
- 12243 [FEATURE] DataTable from_dataframe()
- 12651 [BUG] bokeh.plotting.graph.from_networkx fails on graphs having nodes with string index values
- 13291 [FEATURE] Inline widgets for data entry
- 13349 [component: bokehjs] Tooltip for tab panels
- 13682 [FEATURE] - DataTable - Conditional Formatting
- 13697 [component: bokehjs] [BUG] HoverTool can't adress source with `ö`
- 13612 Add support for math text glyphs
- 13625 Allow users to provide custom units of measurement
* tasks:
- 3529 Unify dev and non-minified resources
- 9684 [component: bokehjs] If BokehJS isn't available, error message should be displayed
- 10157 [component: examples] Replacing Iris data with penguin data
- 12941 [component: build] Don't upload ESM files to CDN
- 13246 Complete the consolidation of scatter markers in bokeh.plotting
- 13381 [component: docs] Document new-style (ESM) JS callbacks
- 13387 [component: docs] [FEATURE] Improving the "Deployment scenario" section of the user guide
- 13430 [component: build] Split up _sri.json
- 13485 Update contour line calculations to use ContourPy's LineType.ChunkCombinedNan
- 13533 Errors in codebase CI runs using MyPy 1.7.0
- 13570 [component: docs] Add documentation and tests for non-visual overrides (PR 13554)
- 13585 [component: bokehjs] [BUG] HTML `<label>` elements are not referencing the item they are labeling
- 13629 Use globally unique and CSS safe IDs in `<script type="application/json">`
- 13667 [BUG] Display Greek small letter mu
- 13669 [component: examples] Stadia tiles not displaying
- 13680 Remove year or year range from copyright notices
- 13700 [component: docs] [BUG] Outdated link in warning for standalone Python callback
- 13734 [component: docs] Typo in the documentation related to writing tests in the Contribute section
- 13736 [component: docs] App README links are all old / bad
- 13096 [component: examples] Show how to reference the same field multiple times in hover tool's formatters
- 13448 Use `Never` type if function doesn't return
- 13449 [component: bokehjs] Use curly brackets in bokehjs for all statements
- 13450 [component: bokehjs] Remove `bokehjs/src/lib/testing.ts`
- 13451 [component: bokehjs] Add support for function callbacks in bokehjs
- 13465 [component: tests] Robustify type expectations greatly reduce `!` usage in tests
- 13470 [component: examples] simplify and use more latex ticks
- 13481 [component: bokehjs] Fix unawaited promises and modernize interactive tests
- 13493 [component: tests] Optimize performance of loading visual baselines
- 13537 Rename `ColorMap` to `PaletteSelect` and improve it
- 13539 [component: docs] Update server example URLs
- 13540 [component: bokehjs] Decouple `Tool` event handlers from state/active management
- 13565 [component: build] Migrate bokehjs' bundles from ES2017 to ES2020
- 13575 [component: examples] Added metadata to position_toolbar.py, position_toolbar_clash.py, and toolbar_autohide.py
- 13582 [component: tests] Sort defaults' baseline by fully qualified names
- 13586 [component: bokehjs] Added `for` tag to HTML `<label>` element to reference input fields
- 13601 [component: bokehjs] Upgrade TypeScript to version 5.3 and upgrade other depenencies
- 13605 [component: build] Relativize imports paths also in type declaration files (`*.d.ts`)
- 13610 [component: build] Don't use implicit command-line arguments in bokehjs
- 13651 [component: bokehjs] Use simpler shader for rect-like glyphs without rounded corners
- 13689 Improve `PlainObjectProxy` and remove unnecessary `hasOwnProperty()`
- 13693 Upgrade nodejs to 20.x (LTS) in CI
- 13701 [component: bokehjs] Normalize enum definitions in bokehjs; remove redundancy
- 13703 [component: bokehjs] Finalize migration to obligatory curly brackets
- 13707 Upgrade mypy, pandas-stubs and ruff and fix issues
- 13709 [component: docs] Update examples for legends
- 13722 Rename property kinds that conflict with JS builtins
- 13724 [component: tests] Ignore `pytest.PytestUnraisableExceptionWarning`
- 13744 [component: docs] Update bokeh 3.4.0 release notes
- 13746 [component: docs] remove double space in example code
- 13753 [component: docs] Add documentation for `ScaleBar` annotation
```
### 3.3
```
--------------------
* bugfixes:
- 7671 [component: bokehjs] Tool tip remains while using a scroll tool
- 11273 [component: bokehjs] [BUG] hover tooltip is cut off when the tooltip is tall and hover near the top of the plot
- 13170 [component: server] [BUG] Static paths loaded always from localhost in Bokeh 3.1.1
- 13195 [component: bokehjs] [BUG] WebGL with dashed line is not working when click_policy is muted
- 13196 Setting readonly properties in model constructors shouldn't be allowed
- 13257 [BUG] FileNotFoundError when setting icon for BoxSelectTool
- 13284 [component: bokehjs] Reset WebGL changed flags on data glyph not visual glyphs
- 13311 [component: tests] Bokeh build failing
- 13315 [component: bokehjs] [BUG] RangeTool allows target plot to pan beyond explicit range bounds
- 13323 [component: bokehjs] Layout is broken when using `RangeTool` and other weird behavior
- 13347 [component: bokehjs] Long tooltip can trigger viewport scrollbars
- 13369 [BUG] gridplot got multiple values for keyword argument 'logo'
- 13377 [component: bokehjs] [BUG] `value_throttled` being `Unset` prevents serialization of some widgets
- 13380 [component: tests] Examples tests are failing due to a missing dependency
- 13400 [component: build] Release build fails with `FileNotFoundError`
- 13407 [component: tests] Tests and CI is broken due to urllib3 incompatibility
* features:
- 2325 [component: bokehjs] Lasso select not working on patches
- 11571 [FEATURE] Make AutocompleteInput more usable by providing an option to match any part of the input items
- 11755 [FEATURE] Show scale in map
- 13200 [FEATURE] Preserve category information for categorical colormapping
- 13203 [FEATURE] Make BoxEditTool support Quad Model
- 13210 Unable to plot a polars.Series with bokeh 3
- 13211 [component: bokehjs] Allow inline LaTeX support
- 13295 Non-specific error when the DataFrame Used to construct a ColumnDataSource contains non-string keys
- 13339 [FEATURE] Allow zoom tools to scale subplots/subcoordinates
- 13403 [FEATURE] Transparent use on JupyterHub
- 13212 Add more options for specifying contour colors
- 13269 Add support for `ColorMap` (palette selector) widget
- 13366 Add stack_labels property to WeightedStackColorMapper
* tasks:
- 8807 Support scale factor for PNG output
- 12548 [component: docs] Unpin Sphinx theme
- 12625 export_png doesn't find chrome webdriver because it was installed as chromedriver-binary
- 13125 Replace utcnow and utcfromtimestamp function calls
- 13136 [component: bokehjs] WebGL support for image glyphs
- 13324 Selenium deprecation warning because of log_path
- 13329 Restore full top-menu in docs
- 13330 Foward-port 3.2.2 SRI hashes and changelog
- 13356 [component: docs] Update tutorials URL to new tutorial
- 13360 [component: docs] Explicitly document conf.py changes for bokeh.sphinxext
- 13385 [component: docs] [FEATURE] Document location of intersphinx file
- 13392 [component: docs] [BUG] Interspinx link added by me in 13386 is wrong
- 12068 [component: examples] Add a variant of ridgeplot example that uses sub-coordinates
- 13175 [component: bokehjs] Implement WebGL multi_line glyph
- 13193 [component: bokehjs] Hover tooltip for ImageStack glyph
- 13215 Use PEP 673 `Self` type instead of `TypeVar(..., bound=...)`
- 13227 Forward ports from 3.2
- 13301 [component: bokehjs] Improve WebGL conversion to ReGL AttributeConfig
- 13304 [component: tests] Allow to configure Chromium executable
- 13309 [component: tests] Allow to serve bokeh examples from bokehjs' devtools server
- 13327 [component: tests] Mark Test_webdriver_control and test_get_screenshot_as_png_* as selenium tests
- 13333 [component: bokehjs] Don't `set_data()` when `FactorRange.{start,end}` changes
- 13334 [component: bokehjs] Improve performance of invalidation of refs in bokehjs
- 13342 Upgrade to ruff 0.0.285
- 13343 [component: bokehjs] Control random (and np.random) seed in devtools' server
- 13352 [component: build] Upgrade to TypeScript 5.2
- 13353 [component: docs] 13276 fix issues in documentation part two
- 13368 [component: docs] Add more examples in the gallery
- 13376 [component: docs] added gallery json and png file to new example
- 13398 [component: docs] Clarify CODE_OF_CONDUCT.md escalation section
- 13399 [component: docs] Update 3.3.0 release notes
- 13405 [component: docs] fix tile_providery.py
- 13408 [component: examples] Correlogram example.
- 13417 [component: docs] Update and restructure categorical chapter
- 13418 Misc 3.3 docs changes
- 13419 [component: build] Add Python 3.12 to CI
```
### 3.2.2
```
--------------------
* bugfixes:
- 13265 [BUG] Merging tools in `gridplot` leads to wrong active state next to tool icon
- 13288 [BUG] construct_color_bar does not support ImageStack glyph
- 13307 [component: tests] Incorrect file docstrings in tests/support/plugins directory
- 13314 [BUG] CDS stream broken for larger rollover
* tasks:
- 13126 [component: examples] [BUG] Mismatch in GroupFilter documentation example between text and code
- 13305 [component: docs] 13276 easy fixes in documentation
- 13326 Backports for 3.2.2
```
### 3.2.1
```
--------------------
* bugfixes:
- 13139 [component: bokehjs] Error in downstream library when rendering WebGL canvas with width or height of zero
- 13162 [component: docs] Broken link in docs/first_steps/first_steps_9.html
- 13248 [component: bokehjs] [BUG] Browser freezes when deleting notebook cell containing plot with TileSource
- 13252 [component: bokehjs] [BUG] plots in png generated by SaveTool on gridplot layout overlap
- 13255 [component: bokehjs] [BUG] Enabling/Disabled DatePickers does not work
- 13262 [component: bokehjs] [BUG] Legend draws 3 columns but `ncols` is set to 2
- 13254 [component: bokehjs] Use `../core/kinds` instead of `core/kinds` in imports
- 13270 [component: docs] Update theme.py
- 13274 [component: docs] fix unterminated string literals in example code [skip ci]
* tasks:
- 13226 [component: bokehjs] [FEATURE] make bokehjs ndarrays cloneable to enable client-side image transforms
- 13272 [component: docs] update docs to show legend support for `nrows` and `ncols`
- 13271 Backports for 3.2.1
```
### 3.2
```
--------------------
* bugfixes:
- 11852 [BUG] DataRange.renderers.append fails silently
- 12078 [component: bokehjs] [BUG] Non-circle hover glyphs permanently rendered with vline/hline mode
- 12718 [component: bokehjs] [BUG] Changing view's filter with group based legend causes redraw in canvas to be shifted
- 12951 [component: bokehjs] [BUG] bokeh.models.Tooltip causes rendering error
- 12956 [component: bokehjs] [BUG] DataTable requires custom scaling in Bokeh 3.1.0
- 13015 [BUG] select(CategoricalColorMapper) returns an empty array
- 13112 [component: bokehjs] [BUG] Setting source.selected.indices fails on glyphs that contain text
- 13134 [component: bokehjs] [BUG] IndexFilter indices no longer accepts numpy.ndarray
- 13150 [component: bokehjs] [BUG] Nodes of networkx graph not rendered using webgl backend
- 13152 [component: tests] Tests fail due to `requests` and `urllib3` 2.x incompatibility
- 13159 [component: docs] [BUG] Small typos in the docs
- 13182 [component: bokehjs] [BUG] legend_field labels no longer update with CDS in Bokeh 3
- 13187 [component: docs] [BUG] Missing import in minimal example in dom.rst
- 13192 [component: bokehjs] [BUG] Cannot reset enabled_dates in DatePicker
- 13197 Release deploy fails with `AccessDenied` when publishing documentation
- 13217 [component: bokehjs] js_link is broken
- 13222 [component: docs] Search bar is missing from dev docs
- 13135 [component: docs] Fix typo
- 13202 [component: docs] Update theme.py
* features:
- 7093 [component: bokehjs] A ColorBar needs a label, as a plot needs a ColorBar
- 12062 [component: bokehjs] [FEATURE] Support varea with step lines
- 12532 [FEATURE] Access to know whether user ctrl-clicks, shift-clicks, or command-clicks in CustomJS callback
- 12829 [FEATURE] Independent extra ranges in a single figure
- 13036 Ability to rotate axis labels by adding 'axis_label_orientation'
- 12677 Add support for `HSpan`, `VSpan`, `HStrip` and `VStrip`
- 12704 Add webgl support to `Annulus`, `Wedge` and `AnnularWedge`
- 12812 Add support for ES module (`import`/`export` syntax) callbacks
* tasks:
- 7156 [component: build] Standalone mode: images referenced in CSS files are missing
- 12278 [component: tests] Add a method for generating bokehjs' JSON tests assests
- 12872 [BUG] ResourceWarning: unclosed file
- 12936 [FEATURE] Update ruff to include W291 (trailing whitespace)
- 13058 Check if sample data files are outdated before loading them
- 13114 [BUG] bokeh.embed.file_html produces unhelpful error message if passing a Document with no root models
- 13116 [component: examples] Burtin example has a bad tick format
- 13117 Update AWS CI role for docs deploy
- 13122 [component: build] sdist builds require git tags
- 13143 [BUG] Ruff pyupgrade keep-runtime-annotations is obsolete.
- 12720 Drop support for Python 3.8
- 12920 [component: docs] Added metadata to legends.py
- 12922 [component: examples] Updated colors of Band Plots
- 12923 [component: docs] added accessible color palette
- 12944 Forward ports from 3.1
- 12950 added metadata to twin_axis.py
- 12953 [component: examples] Update to Bokeh example plot: accessible palette with new images
- 12959 [component: examples] Increased alpha of the circle plot
- 12967 [component: docs] 11765 add metadata to plots
- 12970 Added Images for new Band Plots
- 12975 [component: docs] added metadata to legends_item_visibility.py
- 12977 [component: build] Upgrade to TypeScript 5.0
- 12979 [component: docs] Add metadata to plots (11765)
- 12982 [component: docs] Update example metadata
- 12983 [component: examples] Improve color contrast for accessibility
- 12984 [component: docs] Added reference for server.py file
- 12990 [component: docs] Update text.py with metadata
- 12991 [component: docs] Added metadata to setvalue.py
- 12992 [component: docs] Update metadata to legend_hide and tile_xyzservices
- 12993 [component: docs] Added metadata to label.py and whisker.py
- 12995 [component: docs] Updated server.py reference
- 12998 [component: docs] Added metadata to band.py for Band Plots
- 12999 [component: examples] Updated colors of Twin Axes Plots
- 13006 [component: docs] Add metadata to image alpha
- 13012 [component: docs] Added metadata to examples/plotting/aspect.py
- 13013 [component: examples] Updated colors of Slope Plots
- 13018 [component: examples] Updating nested_colormapped with new accessible palettes
- 13022 [component: docs] Line select metadata
- 13023 [component: docs] 11765 maps cities
- 13024 [component: examples] changed span example lines from solid to dashed
- 13031 Updated colors of Mixed Plots
- 13043 [component: docs] added metadata to tooltip_content.py, arc.py
- 13047 [component: docs] Added metadata to theme_glyphs
- 13050 [component: docs] added metadata to examples/plotting/polar.py
- 13051 [component: docs] Added metadata for examples/models/toolbars2.py
- 13069 [component: examples] Disable `na_filter` instead of ignoring incorrectly parsed NaNs
- 13094 [component: docs] Update docs
Update amqp from 2.5.2 to 5.2.0.
Changelog
### 5.2.0 ``` ===== :release-date: 2023-11-06 10:55 A.M. UTC+6:00 :release-by: Asif Saif Uddin - Added python 3.12 and drop python 3.7 (423). - Test vine 5.1.0 (424). - Set an explicit timeout on SSL handshake to prevent hangs. - Add MessageNacked to recoverable errors. - Send heartbeat frames more often. .. _version-5.1.1: ``` ### 5.1.1 ``` ===== :release-date: 2022-04-17 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://data.safetycli.com/changelogs/amqp/ - Repo: http://github.com/celery/py-amqpUpdate argh from 0.26.2 to 0.31.3.
Changelog
### 0.31.3 ``` --------------------------- Bugs fixed: - wrong type annotation of `errors` in `wrap_errors` (PR 229 by laazy) - tests were failing under Python 3.13 (issue 228 by mgorny) - regression: can't set argument name with `dest` via decorator (issue 224 by mathieulongtin) ``` ### 0.31.2 ``` --------------------------- Bugs fixed: - broken support for `Optional[List]` (but not `Optional[list]`), a narrower case of the problem fixed earlier (issue 216). ``` ### 0.31.1 ``` --------------------------- Bugs fixed: - broken support for type alias `List` (issue 216). Enhancements: - cleaned up the README, rearranged other documentation. ``` ### 0.31.0 ``` --------------------------- Breaking changes: - The typing hints introspection feature is automatically enabled for any command (function) which does **not** have any arguments specified via `arg` decorator. This means that, for example, the following function used to fail and now it will pass:: def main(count: int): assert isinstance(count, int) This may lead to unexpected behaviour in some rare cases. - A small change in the legacy argument mapping policy `BY_NAME_IF_HAS_DEFAULT` concerning the order of variadic positional vs. keyword-only arguments. The following function now results in ``main alpha [args ...] beta`` instead of ``main alpha beta [args ...]``:: def main(alpha, *args, beta): ... This does **not** concern the default name mapping policy. Even for the legacy one it's an edge case which is extremely unlikely to appear in any real-life application. - Removed the previously deprecated decorator `expects_obj`. Enhancements: - Added experimental support for basic typing hints (issue 203) The following hints are currently supported: - ``str``, ``int``, ``float``, ``bool`` (goes to ``type``); - ``list`` (affects ``nargs``), ``list[T]`` (first subtype goes into ``type``); - ``Literal[T1, T2, ...]`` (interpreted as ``choices``); - ``Optional[T]`` AKA ``T | None`` (currently interpreted as ``required=False`` for optional and ``nargs="?"`` for positional arguments; likely to change in the future as use cases accumulate). The exact interpretation of the type hints is subject to change in the upcoming versions of Argh. - Added `always_flush` argument to `dispatch()` (issue 145) - High-level functions `argh.dispatch_command()` and `argh.dispatch_commands()` now accept a new parameter `old_name_mapping_policy`. The behaviour hasn't changed because the parameter is `True` by default. It will change to `False` in Argh v.0.33 or v.1.0. Deprecated: - the `namespace` argument in `argh.dispatch()` and `argh.parse_and_resolve()`. Rationale: continued API cleanup. It's already possible to mutate the namespace object between parsing and calling the endpoint; it's unlikely that anyone would need to specify a custom namespace class or pre-populate it before parsing. Please file an issue if you have a valid use case. Other changes: - Refactoring. ``` ### 0.30.5 ``` --------------------------- Bugs fixed: - A combination of `nargs` with a list as default value would lead to the values coming from CLI being wrapped in another list (issue 212). Enhancements: - Argspec guessing: if `nargs` is not specified but the default value is a list, ``nargs="*"`` is assumed and passed to argparse. ``` ### 0.30.4 ``` --------------------------- There were complaints about the lack of a deprecation cycle for the legacy name mapping policy. This version addresses the issue: - The handling introduced in v.0.30.2 (raising an exception for clarity) is retained for cases when no name mapping policy is specified but function signature contains defaults in non-kwonly args **and kwonly args are also defined**:: def main(alpha, beta=1, *, gamma=2): error — explicit policy required In a similar case but when **kwonly args are not defined** Argh now assumes the legacy name mapping policy (`BY_NAME_IF_HAS_DEFAULT`) and merely issues a deprecation warning with the same message as the exception mentioned above:: def main(alpha, beta=2): `[-b BETA] alpha` + DeprecationWarning This ensures that most of the old scripts still work the same way despite the new policy being used by default and enforced in cases when it's impossible to resolve the mapping conflict. Please note that this "soft" handling is to be removed in version v0.33 (or v1.0 if the former is not deemed necessary). The new name mapping policy will be used by default without warnings, like in v0.30. ``` ### 0.30.3 ``` --------------------------- Bugs fixed: - Regression: a positional argument with an underscore used in `arg` decorator would cause Argh fail on the assembling stage. (208) ``` ### 0.30.2 ``` --------------------------- Bugs fixed: - As reported in 204 and 206, the new default name mapping policy in fact silently changed the CLI API of some scripts: arguments which were previously translated as CLI options became optional positionals. Although the instructions were supplied in the release notes, the upgrade may not necessarily be intentional, so a waste of users' time is quite likely. To alleviate this, the default value for `name_mapping_policy` in standard functions has been changed to `None`; if it's not specified, Argh falls back to the new default policy, but raises `ArgumentNameMappingError` with detailed instructions if it sees a non-kwonly argument with a default value. Please specify the policy explicitly in order to avoid this error if you need to infer optional positionals (``nargs="?"``) from function signature. ``` ### 0.30.1 ``` --------------------------- Bugs fixed: - Regression: certain special values in argument default value would cause an exception (204) Enhancements: - Improved the tutorial. - Added a more informative error message when the reason is likely to be related to the migration from Argh v0.29 to a version with a new argument name mapping policy. Other changes: - Added `py.typed` marker file for :pep:`561`. ``` ### 0.30.0 ``` --------------------------- Backwards incompatible changes: - A new policy for mapping function arguments to CLI arguments is used by default (see :class:`argh.assembling.NameMappingPolicy`). The following function does **not** map to ``func foo [--bar]`` anymore:: def func(foo, bar=None): ... Since this release it maps to ``func foo [bar]`` instead. Please update the function this way to keep `bar` an "option":: def func(foo, *, bar=None): ... If you cannot modify the function signature to use kwonly args for options, please consider explicitly specifying the legacy name mapping policy:: set_default_command( func, name_mapping_policy=NameMappingPolicy.BY_NAME_IF_HAS_DEFAULT ) - The name mapping policy `BY_NAME_IF_HAS_DEFAULT` slightly deviates from the old behaviour. Kwonly arguments without default values used to be marked as required options (``--foo FOO``), now they are treated as positionals (``foo``). Please consider the new default policy (`BY_NAME_IF_KWONLY`) for a better treatment of kwonly. - Removed previously deprecated features (184 → 188): - argument help string in annotations — reserved for type hints; - `argh.SUPPORTS_ALIASES`; - `argh.safe_input()`; - previously renamed arguments for `add_commands()`: `namespace`, `namespace_kwargs`, `title`, `description`, `help`; - `pre_call` argument in `dispatch()`. The basic usage remains simple but more granular functions are now available for more control. Instead of this:: argh.dispatch(..., pre_call=pre_call_hook) please use this:: func, ns = argh.parse_and_resolve(...) pre_call_hook(ns) argh.run_endpoint_function(func, ns, ...) Deprecated: - The `expects_obj` decorator. Rationale: it used to support the old, "un-pythonic" style of usage, which essentially lies outside the scope of Argh. If you are not using the mapping of function arguments onto CLI, then you aren't reducing the amount of code compared to vanilla Argparse. - The `add_help_command` argument in `dispatch()`. Rationale: it doesn't add much to user experience; it's not much harder to type ``--help`` than it is to type ``help``; moreover, the option can be added anywhere, unlike its positional counterpart. Enhancements: - Added support for Python 3.12. - Added type annotations to existing Argh code (185 → 189). - The `dispatch()` function has been refactored, so in case you need finer control over the process, two new, more granular functions can be used: - `endpoint_function, namespace = argh.parse_and_resolve(...)` - `argh.run_endpoint_function(endpoint_function, namespace, ...)` Please note that the names may change in the upcoming versions. - Configurable name mapping policy has been introduced for function argument to CLI argument translation (191 → 199): - `BY_NAME_IF_KWONLY` (default and recommended). - `BY_NAME_IF_HAS_DEFAULT` (close to pre-v.0.30 behaviour); Please check API docs on :class:`argh.assembling.NameMappingPolicy` for details. ``` ### 0.29.4 ``` --------------------------- Bugs fixed: - Test coverage reported as <100% when argcomplete is installed (187) ``` ### 0.29.3 ``` ------------------------------ Technical releases for packaging purposes. No changes in functionality. ``` ### 0.29.0 ``` --------------------------- Backwards incompatible changes: - Wrapped exceptions now cause ``dispatching.dispatch()`` to raise ``SystemExit(1)`` instead of returning without error. For most users, this means failed commands will now exit with a failure status instead of a success. (161) Deprecated: - Renamed arguments in `add_commands()` (165): - `namespace` → `group_name` - `namespace_kwargs` → `group_kwargs` The old names are deprecated and will be removed in v.0.30. Enhancements: - Can control exit status (see Backwards Incompatible Changes above) when raising ``CommandError`` using the ``code`` keyword arg. Bugs fixed: - Positional arguments should not lead to removal of short form of keyword arguments. (115) Other changes: - Avoid depending on iocapture by using pytest's built-in feature (177) ``` ### 0.28.1 ``` --------------------------- - Fixed bugs in tests (171, 172) ``` ### 0.28.0 ``` --------------------------- A major cleanup. Backward incompatible changes: - Dropped support for Python 2.7 and 3.7. Deprecated features, to be removed in v.0.30: - `argh.assembling.SUPPORTS_ALIASES`. - Always `True` for recent versions of Python. - `argh.io.safe_input()` AKA `argh.interaction.safe_input()`. - Not relevant anymore. Please use the built-in `input()` instead. - argument `pre_call` in `dispatch()`. Even though this hack seems to have been used in some projects, it was never part of the official API and never recommended. Describing your use case in the `discussion about shared arguments`_ can help improve the library to accomodate it in a proper way. .. _discussion about shared arguments: https://github.com/neithere/argh/issues/63 - Argument help as annotations. - Annotations will only be used for types after v.0.30. - Please replace any instance of:: def func(foo: "Foobar"): with the following:: arg('-f', '--foo', help="Foobar") def func(foo): It will be decided later how to keep this functionality "DRY" (don't repeat yourself) without conflicts with modern conventions and tools. - Added deprecation warnings for some arguments deprecated back in v.0.26. ``` ### 0.27.2 ``` --------------------------- Minor packaging fix: * chore: include file required by tox.ini in the sdist (155) ``` ### 0.27.1 ``` --------------------------- Minor building and packaging fixes: * docs: add Read the Docs config (160) * chore: include tox.ini in the sdist (155) ``` ### 0.27.0 ``` --------------------------- This is the last version to support Python 2.7. Backward incompatible changes: - Dropped support for Python 2.6. Enhancements: - Added support for Python 3.7 through 3.11. - Support introspection of function signature behind the `wraps` decorator (issue 111). Fixed bugs: - When command function signature contained ``**kwargs`` *and* positionals without defaults and with underscores in their names, a weird behaviour could be observed (issue 104). - Fixed introspection through decorators (issue 111). - Switched to Python's built-in `unittest.mock` (PR 154). - Fixed bug with `skip_unknown_args=True` (PR 134). - Fixed tests for Python 3.9.7+ (issue 148). Other changes: - Included the license files in manifest (PR 112). - Extended the list of similar projects (PR 87). - Fixed typos and links in documentation (PR 110, 116, 156). - Switched CI to Github Actions (PR 153). ```Links
- PyPI: https://pypi.org/project/argh - Changelog: https://data.safetycli.com/changelogs/argh/ - Docs: https://pythonhosted.org/argh/Update 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 24.2.0.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/attrsUpdate beautifulsoup4 from 4.8.1 to 4.12.3.
Changelog
### 4.11.1 ``` This release was done to ensure that the unit tests are packaged along with the released source. There are no functionality changes in this release, but there are a few other packaging changes: * The Japanese and Korean translations of the documentation are included. * The changelog is now packaged as CHANGELOG, and the license file is packaged as LICENSE. NEWS.txt and COPYING.txt are still present, but may be removed in the future. * TODO.txt is no longer packaged, since a TODO is not relevant for released code. ``` ### 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://data.safetycli.com/changelogs/beautifulsoup4/Update billiard from 3.6.1.0 to 4.2.0.
Changelog
### 4.2.0 ``` -------------------- - Update process.py to close during join only if process has completed. - Adjust the __repr__ in ApplyResult. - Remove python 3.7 from CI. - Added Python 3.12 support. - Fixed (co_positions): resolve issue caused by absence co_positions (395). - Fixed: Replaced mktemp usage for Python 3 from python 2. - Changed nose test to pytest (397) in Integration test. - Changed nose dependency for unit test (383). ``` ### 4.1.0 ``` -------------------- - Fixed a python 2 to 3 compat issue which was missed earlier (374). - Adde Python 3.11 primary support ``` ### 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://data.safetycli.com/changelogs/billiard/ - Repo: https://github.com/celery/billiardUpdate blinker from 1.4 to 1.8.2.
Changelog
### 1.8.2 ``` ------------- Released 2024-05-06 - Simplify type for ``_async_wrapper`` and ``_sync_wrapper`` arguments. :pr:`156` ``` ### 1.8.1 ``` ------------- Released 2024-04-28 - Restore identity handling for ``str`` and ``int`` senders. :pr:`148` - Fix deprecated ``blinker.base.WeakNamespace`` import. :pr:`149` - Fix deprecated ``blinker.base.receiver_connected import``. :pr:`153` - Use types from ``collections.abc`` instead of ``typing``. :pr:`150` - Fully specify exported types as reported by pyright. :pr:`152` ``` ### 1.8.0 ``` ------------- Released 2024-04-27 - Deprecate the ``__version__`` attribute. Use feature detection, or ``importlib.metadata.version("blinker")``, instead. :issue:`128` - Specify that the deprecated ``temporarily_connected_to`` will be removed in the next version. - Show a deprecation warning for the deprecated global ``receiver_connected`` signal and specify that it will be removed in the next version. - Show a deprecation warning for the deprecated ``WeakNamespace`` and specify that it will be removed in the next version. - Greatly simplify how the library uses weakrefs. This is a significant change internally but should not affect any public API. :pr:`144` - Expose the namespace used by ``signal()`` as ``default_namespace``. :pr:`145` ``` ### 1.7.0 ``` ------------- Released 2023-11-01 - Fixed messages printed to standard error about unraisable exceptions during signal cleanup, typically during interpreter shutdown. :pr:`123` - Allow the Signal ``set_class`` to be customised, to allow calling of receivers in registration order. :pr:`116`. - Drop Python 3.7 and support Python 3.12. :pr:`126` ``` ### 1.6.3 ``` ------------- Released 2023-09-23 - Fix ``SyncWrapperType`` and ``AsyncWrapperType`` :pr:`108` - Fixed issue where ``connected_to`` would not disconnect the receiver if an instance of ``BaseException`` was raised. :pr:`114` ``` ### 1.6.2 ``` ------------- Released 2023-04-12 - Type annotations are not evaluated at runtime. typing-extensions is not a runtime dependency. :pr:`94` ``` ### 1.6.1 ``` ------------- Released 2023-04-09 - Ensure that ``py.typed`` is present in the distributions (to enable other projects to use Blinker's typing). - Require typing-extensions > 4.2 to ensure it includes ``ParamSpec``. :issue:`90` ``` ### 1.6 ``` ----------- Released 2023-04-02 - Add a ``muted`` context manager to temporarily turn off a signal. :pr:`84` - ``int`` instances with the same value will be treated as the same sender, the same as ``str`` instances. :pr:`83` - Add a ``send_async`` method to allow signals to send to coroutine receivers. :pr:`76` - Update and modernise the project structure to match that used by the Pallets projects. :pr:`77` - Add an initial set of type hints for the project. ``` ### 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://data.safetycli.com/changelogs/blinker/Update bokeh from 1.4.0 to 3.5.1.
Changelog
### 3.5 ``` -------------------- * bugfixes: - 8766 [component: bokehjs] box_select not working as active_drag for gridplot - 12638 [component: bokehjs] Make Slider and Image available in BokehJS (JS only) - 13515 [component: tests] CI unit-test on Python 3.9 fails systematically - 13623 [component: bokehjs] [BUG] TextAreaInput resizable=False doesn't set resize: none - 13720 [component: docs] Explanation is part of the code block in the latex_axis_labels_titles_labels example - 13766 [component: bokehjs] [BUG] Dropdown doesnt update properly when .menu changed in 3.4 - 13771 [component: bokehjs] GMap example not showing glyphs - 13787 [component: bokehjs] [BUG] DataTable inside Dialog - 13789 [component: docs] [BUG] JS errors on Bokeh docs page - 13824 [component: docs] activate pydata-sphinx-theme version banner - 13834 [component: build] bokehjs' build fails on Windows with no explanation - 13844 [component: build] [BUG] cannot build environment with pixi due to `firefox =>96` constraint - 13848 Can't build extensions on Windows - 13852 [component: bokehjs] [BUG] <b> and <strong> ignored in tooltips on Firefox - 13878 [component: bokehjs] Bokeh.Plotting.figure.circle in bokehjs can't find `x` and `y` in a ColumnDataSource - 13894 [component: bokehjs] `Tooltip` is initially attached to the DOM when it shouldn't be - 13895 [component: bokehjs] Inner canvas layers need `overflow: hidden` after PR 13863 - 13897 [component: docs] [BUG] Typing of layouts.gridplot expects wrong type if ncols given - 13902 Release build fails after PR 13901 - 13910 [component: tests] Tests/CI fail due to a regression in requests 2.32.0 - 13912 [component: bokehjs] [BUG] Dialog and Datatable don't get along well - 13919 [component: bokehjs] [BUG] Bokeh 3.5 no longer allow custom properties for HTMLAttr - 13923 [component: bokehjs] `Tooltip.content` doesn't rebuild views on change - 13948 [component: docs] Version banner warns about unknown version on latest docs after 3.4.2 release - 13951 [component: bokehjs] [BUG] Image Glyph causing tons of unnecessary calls to set_data - 13822 [component: docs] remove consecutive "the" and fix typos in touched files - 13879 [component: docs] Fix broken example in user guide advanced bokehjs - 13884 [component: docs] silence warning in `theme_glyphs.py` - 13908 [component: bokehjs] Fix `CartesianFrame`'s position and generalize `rendering_target()` - 13926 [component: docs] Remove `blob/main` and `tree/master` from references - 13927 [component: docs] update path in readme for server examples - 13939 [component: docs] correct version string to match dev name from switcher.json - 13940 [component: bokehjs] Fix initialization of `AjaxDataSource` and add tests * features: - 8289 [component: bokehjs] Permanent labels on Networkx graph - 10439 [component: bokehjs] Activate wheel zoom by default with BokehJS - 12185 [component: bokehjs] [FEATURE] Legend click events - 12759 [component: bokehjs] [FEATURE] Support using CSS Variables in place of colors - 13599 [FEATURE] Support formatters when using Template as HoverTool - 13646 [FEATURE] Support BoxSelectTool-like range-setting for the RangeTool - 13652 [FEATURE] `HTMLLabel` to support `stylesheets` and `css_classes` - 13673 [FEATURE] Add Carbon Theme - 13728 [FEATURE] Create option for wheel zoom tool to apply only to subplot nearest to the cursor position - 13792 [component: server] [FEATURE] Allow bokeh server embed script to forward credentials - 13861 [FEATURE] Support directory upload and clearing inputs from Python for `FileInput` widget - 13935 [FEATURE] Allow extensions to register server side events - 13936 [component: bokehjs] `AjaxDataSource.if_modified` not implemented - 13467 [component: bokehjs] Add scale up boundary to datetimetickformatter - 13810 Add support for `BoxAnnotation.inverted` - 13890 Add support for server sent bokeh/model/UI events - 13906 Add support for resize and drag handles to `BoxAnnotation` * tasks: - 11745 [component: docs] Need examples of callbacks with BokehJS - 13791 [component: docs] [DOC] Boxplot example: some whiskers and vbar are rendered slightly asymmetrically and boldly - 13831 [component: bokehjs] Tap tool default mode should select+unselect, but not append - 13856 [component: build] Move sampledata files to pip/conda installable package - 13634 Drop support for Python 3.9 and modernize the codebase - 13686 [component: examples] added metadata to spans and strips example - 13731 [component: examples] Add metadata to the data_models.py in plotting example - 13735 [component: bokehjs] Improve type safety of DOM elements on `core/dom` - 13747 [component: build] Upgrade to TypeScript 5.4 - 13770 [component: bokehjs] Remove legacy font measurement logic - 13778 [component: bokehjs] Simplify eslint's configuration - 13802 [component: build] Update bokehjs' dependencies and clear dependabot alerts - 13839 [component: server] remove unnecessary code from ProtocolHandler.handle - 13840 Upgrade to mypy 1.10.0 and ruff 0.4.2 - 13847 Upgrade CI actions to most recent versions - 13860 Remove unused code from `bokeh.models.plots` - 13862 [component: bokehjs] Redesign `CartesianFrame` as an internal model/view - 13863 [component: bokehjs] Generalize bbox handling in UI views (DOM and canvas) - 13877 [component: bokehjs] Replace `PlotView.renderer_view()` with generic `ViewQuery` - 13882 Remove old deprecations - 13889 [component: docs] Repository cloning issues - 13892 Unify definitions of enums in `bokeh.core.enums` - 13925 [component: build] Add `http://` to devtools server - 13961 Final preparations for 3.5.0 release ``` ### 3.4 ``` -------------------- * bugfixes: - 6826 [component: bokehjs] Tap events not registering during MouseMove events - 8508 [component: bokehjs] Tap event latency - 10782 [component: bokehjs] Typo in prelude.ts - 11794 `BOKEH_DEV=true` assumes file resources when using the server - 12088 [component: bokehjs] [BUG] Select widget has no value if only options are provided but the UI suggests otherwise - 12616 [component: bokehjs] [BUG] installing bokehjs from npm doesn't pull in dependencies - 12870 [component: bokehjs] [BUG] DatetimeTickFormatter strips leading 0 in "%H" format, works in " %H" - 13071 [component: bokehjs] [BUG] Pinching zoom-in on touch devices - 13131 [component: bokehjs] roots added in a callback are not displayed - 13157 [component: bokehjs] Prevent blink when updating ImageURL source - 13281 [component: bokehjs] font-size does not depend on --font-size css variable - 13293 [component: bokehjs] [BUG] _hit_point() is broken in VAreaStep - 13337 [component: bokehjs] [BUG] `output_notebook(resources=INLINE)` in jupyter lab does not load jquery - 13362 [component: bokehjs] [BUG] Inconsistent handling of background and border fill alpha - 13378 [component: bokehjs] [BUG] `Axis.major_label_overrides` being `{}` causing error in deserialization - 13389 Unable to clone models with readonly properties - 13421 `bokehjsdir(dev=True)` doesn't resolve `bokehjs/build` anymore - 13441 [component: bokehjs] [BUG] filter.booleans doesn't trigger the re-render of the plot - 13483 [component: bokehjs] [BUG] RangeTool does not respect target `max_interval` - 13499 [BUG] Latex does not render in Notebook - 13500 [component: bokehjs] [BUG] Box edit tool using all supported glyphs - 13520 [component: bokehjs] [BUG] Template does not seem to render correctly in Firefox - 13524 [component: docs] [BUG] Missing SRI hash for version 2.2.2 - 13525 [component: docs] [BUG] Unexpected attribute 'size' to Circle - 13536 [component: bokehjs] ColumnDataSource.selected.indices incompatibility with CDSView.filter.indices [BUG] - 13555 [component: bokehjs] [BUG] image hover value is wrong on inverted axes - 13558 [component: build] Release build CI workflow fails - 13563 [BUG] Return type of the Model.__new__ function is incorrect - 13583 [component: tests] `minimal-deps` CI job fails with "coroutine was never awaited" - 13598 [component: bokehjs] [BUG] Improve NaT support for HoverTool - 13607 [component: bokehjs] [BUG] Multiple inline math elements in different axes causing axis labels to disappear - 13611 [component: bokehjs] [BUG] Layout won’t update after curdoc().unhold() - 13637 [BUG] Regression handling glyph border_radius that is a dict - 13648 [component: bokehjs] [BUG] WebGL Rect with large corner radius rendered incorrectly - 13678 [component: bokehjs] [BUG] Using tap tool makes image glyph disappear with webgl enabled - 13679 [component: examples] Deprecation warning in notebook_embed.ipynb - 13688 Useless error formatting can be sometimes costly in on_change setup - 13698 [component: docs] Missing links in docs in "Third-party integrations" page - 13716 Errors related to MIN_PREFERRED_MAX_WIDTH while building the docs - 13717 [component: docs] Broken page in the docs - 13729 [component: docs] [BUG] Documentation Missing space character in the command to enable jupyter server extension in jupyterLab docs. - 13739 [component: docs] [BUG] Documentation: TypeScript in Custom Extensions section fails to compile - 13743 VBox is not working in 3.4.0rc1 - 13755 [component: bokehjs] [BUG] Button does not updated when property is changed - 13756 [component: bokehjs] `Tooltip` node positioning is wrong when the target is offset - 13713 [component: build] Fix logic in plugin prelude - 13718 [component: docs] add MathTextGlyph to imports - 13737 [component: build] Include generated TS modules in extensions' build - 13741 [component: bokehjs] Avoid spurious warning about Py/Js version mismatch - 13758 [component: docs] fix broken link in first_steps_9.rst * features: - 2367 Different sizes not used for selection & nonselection glyphs - 4284 Add attribution annotation - 4416 Add support Title/Label bounding box padding - 8153 [component: bokehjs] Feature Request: Hide some (but not all) tools from toolbar - 8519 Overlapping attribution for labels tiles - 8898 [component: bokehjs] Allow Select to accept non-string option values - 9843 categorical slider - 10317 [BUG] Cannot deselect with TapTool - 10583 The empty_value property of EditTools needs generalizing - 12243 [FEATURE] DataTable from_dataframe() - 12651 [BUG] bokeh.plotting.graph.from_networkx fails on graphs having nodes with string index values - 13291 [FEATURE] Inline widgets for data entry - 13349 [component: bokehjs] Tooltip for tab panels - 13682 [FEATURE] - DataTable - Conditional Formatting - 13697 [component: bokehjs] [BUG] HoverTool can't adress source with `ö` - 13612 Add support for math text glyphs - 13625 Allow users to provide custom units of measurement * tasks: - 3529 Unify dev and non-minified resources - 9684 [component: bokehjs] If BokehJS isn't available, error message should be displayed - 10157 [component: examples] Replacing Iris data with penguin data - 12941 [component: build] Don't upload ESM files to CDN - 13246 Complete the consolidation of scatter markers in bokeh.plotting - 13381 [component: docs] Document new-style (ESM) JS callbacks - 13387 [component: docs] [FEATURE] Improving the "Deployment scenario" section of the user guide - 13430 [component: build] Split up _sri.json - 13485 Update contour line calculations to use ContourPy's LineType.ChunkCombinedNan - 13533 Errors in codebase CI runs using MyPy 1.7.0 - 13570 [component: docs] Add documentation and tests for non-visual overrides (PR 13554) - 13585 [component: bokehjs] [BUG] HTML `<label>` elements are not referencing the item they are labeling - 13629 Use globally unique and CSS safe IDs in `<script type="application/json">` - 13667 [BUG] Display Greek small letter mu - 13669 [component: examples] Stadia tiles not displaying - 13680 Remove year or year range from copyright notices - 13700 [component: docs] [BUG] Outdated link in warning for standalone Python callback - 13734 [component: docs] Typo in the documentation related to writing tests in the Contribute section - 13736 [component: docs] App README links are all old / bad - 13096 [component: examples] Show how to reference the same field multiple times in hover tool's formatters - 13448 Use `Never` type if function doesn't return - 13449 [component: bokehjs] Use curly brackets in bokehjs for all statements - 13450 [component: bokehjs] Remove `bokehjs/src/lib/testing.ts` - 13451 [component: bokehjs] Add support for function callbacks in bokehjs - 13465 [component: tests] Robustify type expectations greatly reduce `!` usage in tests - 13470 [component: examples] simplify and use more latex ticks - 13481 [component: bokehjs] Fix unawaited promises and modernize interactive tests - 13493 [component: tests] Optimize performance of loading visual baselines - 13537 Rename `ColorMap` to `PaletteSelect` and improve it - 13539 [component: docs] Update server example URLs - 13540 [component: bokehjs] Decouple `Tool` event handlers from state/active management - 13565 [component: build] Migrate bokehjs' bundles from ES2017 to ES2020 - 13575 [component: examples] Added metadata to position_toolbar.py, position_toolbar_clash.py, and toolbar_autohide.py - 13582 [component: tests] Sort defaults' baseline by fully qualified names - 13586 [component: bokehjs] Added `for` tag to HTML `<label>` element to reference input fields - 13601 [component: bokehjs] Upgrade TypeScript to version 5.3 and upgrade other depenencies - 13605 [component: build] Relativize imports paths also in type declaration files (`*.d.ts`) - 13610 [component: build] Don't use implicit command-line arguments in bokehjs - 13651 [component: bokehjs] Use simpler shader for rect-like glyphs without rounded corners - 13689 Improve `PlainObjectProxy` and remove unnecessary `hasOwnProperty()` - 13693 Upgrade nodejs to 20.x (LTS) in CI - 13701 [component: bokehjs] Normalize enum definitions in bokehjs; remove redundancy - 13703 [component: bokehjs] Finalize migration to obligatory curly brackets - 13707 Upgrade mypy, pandas-stubs and ruff and fix issues - 13709 [component: docs] Update examples for legends - 13722 Rename property kinds that conflict with JS builtins - 13724 [component: tests] Ignore `pytest.PytestUnraisableExceptionWarning` - 13744 [component: docs] Update bokeh 3.4.0 release notes - 13746 [component: docs] remove double space in example code - 13753 [component: docs] Add documentation for `ScaleBar` annotation ``` ### 3.3 ``` -------------------- * bugfixes: - 7671 [component: bokehjs] Tool tip remains while using a scroll tool - 11273 [component: bokehjs] [BUG] hover tooltip is cut off when the tooltip is tall and hover near the top of the plot - 13170 [component: server] [BUG] Static paths loaded always from localhost in Bokeh 3.1.1 - 13195 [component: bokehjs] [BUG] WebGL with dashed line is not working when click_policy is muted - 13196 Setting readonly properties in model constructors shouldn't be allowed - 13257 [BUG] FileNotFoundError when setting icon for BoxSelectTool - 13284 [component: bokehjs] Reset WebGL changed flags on data glyph not visual glyphs - 13311 [component: tests] Bokeh build failing - 13315 [component: bokehjs] [BUG] RangeTool allows target plot to pan beyond explicit range bounds - 13323 [component: bokehjs] Layout is broken when using `RangeTool` and other weird behavior - 13347 [component: bokehjs] Long tooltip can trigger viewport scrollbars - 13369 [BUG] gridplot got multiple values for keyword argument 'logo' - 13377 [component: bokehjs] [BUG] `value_throttled` being `Unset` prevents serialization of some widgets - 13380 [component: tests] Examples tests are failing due to a missing dependency - 13400 [component: build] Release build fails with `FileNotFoundError` - 13407 [component: tests] Tests and CI is broken due to urllib3 incompatibility * features: - 2325 [component: bokehjs] Lasso select not working on patches - 11571 [FEATURE] Make AutocompleteInput more usable by providing an option to match any part of the input items - 11755 [FEATURE] Show scale in map - 13200 [FEATURE] Preserve category information for categorical colormapping - 13203 [FEATURE] Make BoxEditTool support Quad Model - 13210 Unable to plot a polars.Series with bokeh 3 - 13211 [component: bokehjs] Allow inline LaTeX support - 13295 Non-specific error when the DataFrame Used to construct a ColumnDataSource contains non-string keys - 13339 [FEATURE] Allow zoom tools to scale subplots/subcoordinates - 13403 [FEATURE] Transparent use on JupyterHub - 13212 Add more options for specifying contour colors - 13269 Add support for `ColorMap` (palette selector) widget - 13366 Add stack_labels property to WeightedStackColorMapper * tasks: - 8807 Support scale factor for PNG output - 12548 [component: docs] Unpin Sphinx theme - 12625 export_png doesn't find chrome webdriver because it was installed as chromedriver-binary - 13125 Replace utcnow and utcfromtimestamp function calls - 13136 [component: bokehjs] WebGL support for image glyphs - 13324 Selenium deprecation warning because of log_path - 13329 Restore full top-menu in docs - 13330 Foward-port 3.2.2 SRI hashes and changelog - 13356 [component: docs] Update tutorials URL to new tutorial - 13360 [component: docs] Explicitly document conf.py changes for bokeh.sphinxext - 13385 [component: docs] [FEATURE] Document location of intersphinx file - 13392 [component: docs] [BUG] Interspinx link added by me in 13386 is wrong - 12068 [component: examples] Add a variant of ridgeplot example that uses sub-coordinates - 13175 [component: bokehjs] Implement WebGL multi_line glyph - 13193 [component: bokehjs] Hover tooltip for ImageStack glyph - 13215 Use PEP 673 `Self` type instead of `TypeVar(..., bound=...)` - 13227 Forward ports from 3.2 - 13301 [component: bokehjs] Improve WebGL conversion to ReGL AttributeConfig - 13304 [component: tests] Allow to configure Chromium executable - 13309 [component: tests] Allow to serve bokeh examples from bokehjs' devtools server - 13327 [component: tests] Mark Test_webdriver_control and test_get_screenshot_as_png_* as selenium tests - 13333 [component: bokehjs] Don't `set_data()` when `FactorRange.{start,end}` changes - 13334 [component: bokehjs] Improve performance of invalidation of refs in bokehjs - 13342 Upgrade to ruff 0.0.285 - 13343 [component: bokehjs] Control random (and np.random) seed in devtools' server - 13352 [component: build] Upgrade to TypeScript 5.2 - 13353 [component: docs] 13276 fix issues in documentation part two - 13368 [component: docs] Add more examples in the gallery - 13376 [component: docs] added gallery json and png file to new example - 13398 [component: docs] Clarify CODE_OF_CONDUCT.md escalation section - 13399 [component: docs] Update 3.3.0 release notes - 13405 [component: docs] fix tile_providery.py - 13408 [component: examples] Correlogram example. - 13417 [component: docs] Update and restructure categorical chapter - 13418 Misc 3.3 docs changes - 13419 [component: build] Add Python 3.12 to CI ``` ### 3.2.2 ``` -------------------- * bugfixes: - 13265 [BUG] Merging tools in `gridplot` leads to wrong active state next to tool icon - 13288 [BUG] construct_color_bar does not support ImageStack glyph - 13307 [component: tests] Incorrect file docstrings in tests/support/plugins directory - 13314 [BUG] CDS stream broken for larger rollover * tasks: - 13126 [component: examples] [BUG] Mismatch in GroupFilter documentation example between text and code - 13305 [component: docs] 13276 easy fixes in documentation - 13326 Backports for 3.2.2 ``` ### 3.2.1 ``` -------------------- * bugfixes: - 13139 [component: bokehjs] Error in downstream library when rendering WebGL canvas with width or height of zero - 13162 [component: docs] Broken link in docs/first_steps/first_steps_9.html - 13248 [component: bokehjs] [BUG] Browser freezes when deleting notebook cell containing plot with TileSource - 13252 [component: bokehjs] [BUG] plots in png generated by SaveTool on gridplot layout overlap - 13255 [component: bokehjs] [BUG] Enabling/Disabled DatePickers does not work - 13262 [component: bokehjs] [BUG] Legend draws 3 columns but `ncols` is set to 2 - 13254 [component: bokehjs] Use `../core/kinds` instead of `core/kinds` in imports - 13270 [component: docs] Update theme.py - 13274 [component: docs] fix unterminated string literals in example code [skip ci] * tasks: - 13226 [component: bokehjs] [FEATURE] make bokehjs ndarrays cloneable to enable client-side image transforms - 13272 [component: docs] update docs to show legend support for `nrows` and `ncols` - 13271 Backports for 3.2.1 ``` ### 3.2 ``` -------------------- * bugfixes: - 11852 [BUG] DataRange.renderers.append fails silently - 12078 [component: bokehjs] [BUG] Non-circle hover glyphs permanently rendered with vline/hline mode - 12718 [component: bokehjs] [BUG] Changing view's filter with group based legend causes redraw in canvas to be shifted - 12951 [component: bokehjs] [BUG] bokeh.models.Tooltip causes rendering error - 12956 [component: bokehjs] [BUG] DataTable requires custom scaling in Bokeh 3.1.0 - 13015 [BUG] select(CategoricalColorMapper) returns an empty array - 13112 [component: bokehjs] [BUG] Setting source.selected.indices fails on glyphs that contain text - 13134 [component: bokehjs] [BUG] IndexFilter indices no longer accepts numpy.ndarray - 13150 [component: bokehjs] [BUG] Nodes of networkx graph not rendered using webgl backend - 13152 [component: tests] Tests fail due to `requests` and `urllib3` 2.x incompatibility - 13159 [component: docs] [BUG] Small typos in the docs - 13182 [component: bokehjs] [BUG] legend_field labels no longer update with CDS in Bokeh 3 - 13187 [component: docs] [BUG] Missing import in minimal example in dom.rst - 13192 [component: bokehjs] [BUG] Cannot reset enabled_dates in DatePicker - 13197 Release deploy fails with `AccessDenied` when publishing documentation - 13217 [component: bokehjs] js_link is broken - 13222 [component: docs] Search bar is missing from dev docs - 13135 [component: docs] Fix typo - 13202 [component: docs] Update theme.py * features: - 7093 [component: bokehjs] A ColorBar needs a label, as a plot needs a ColorBar - 12062 [component: bokehjs] [FEATURE] Support varea with step lines - 12532 [FEATURE] Access to know whether user ctrl-clicks, shift-clicks, or command-clicks in CustomJS callback - 12829 [FEATURE] Independent extra ranges in a single figure - 13036 Ability to rotate axis labels by adding 'axis_label_orientation' - 12677 Add support for `HSpan`, `VSpan`, `HStrip` and `VStrip` - 12704 Add webgl support to `Annulus`, `Wedge` and `AnnularWedge` - 12812 Add support for ES module (`import`/`export` syntax) callbacks * tasks: - 7156 [component: build] Standalone mode: images referenced in CSS files are missing - 12278 [component: tests] Add a method for generating bokehjs' JSON tests assests - 12872 [BUG] ResourceWarning: unclosed file - 12936 [FEATURE] Update ruff to include W291 (trailing whitespace) - 13058 Check if sample data files are outdated before loading them - 13114 [BUG] bokeh.embed.file_html produces unhelpful error message if passing a Document with no root models - 13116 [component: examples] Burtin example has a bad tick format - 13117 Update AWS CI role for docs deploy - 13122 [component: build] sdist builds require git tags - 13143 [BUG] Ruff pyupgrade keep-runtime-annotations is obsolete. - 12720 Drop support for Python 3.8 - 12920 [component: docs] Added metadata to legends.py - 12922 [component: examples] Updated colors of Band Plots - 12923 [component: docs] added accessible color palette - 12944 Forward ports from 3.1 - 12950 added metadata to twin_axis.py - 12953 [component: examples] Update to Bokeh example plot: accessible palette with new images - 12959 [component: examples] Increased alpha of the circle plot - 12967 [component: docs] 11765 add metadata to plots - 12970 Added Images for new Band Plots - 12975 [component: docs] added metadata to legends_item_visibility.py - 12977 [component: build] Upgrade to TypeScript 5.0 - 12979 [component: docs] Add metadata to plots (11765) - 12982 [component: docs] Update example metadata - 12983 [component: examples] Improve color contrast for accessibility - 12984 [component: docs] Added reference for server.py file - 12990 [component: docs] Update text.py with metadata - 12991 [component: docs] Added metadata to setvalue.py - 12992 [component: docs] Update metadata to legend_hide and tile_xyzservices - 12993 [component: docs] Added metadata to label.py and whisker.py - 12995 [component: docs] Updated server.py reference - 12998 [component: docs] Added metadata to band.py for Band Plots - 12999 [component: examples] Updated colors of Twin Axes Plots - 13006 [component: docs] Add metadata to image alpha - 13012 [component: docs] Added metadata to examples/plotting/aspect.py - 13013 [component: examples] Updated colors of Slope Plots - 13018 [component: examples] Updating nested_colormapped with new accessible palettes - 13022 [component: docs] Line select metadata - 13023 [component: docs] 11765 maps cities - 13024 [component: examples] changed span example lines from solid to dashed - 13031 Updated colors of Mixed Plots - 13043 [component: docs] added metadata to tooltip_content.py, arc.py - 13047 [component: docs] Added metadata to theme_glyphs - 13050 [component: docs] added metadata to examples/plotting/polar.py - 13051 [component: docs] Added metadata for examples/models/toolbars2.py - 13069 [component: examples] Disable `na_filter` instead of ignoring incorrectly parsed NaNs - 13094 [component: docs] Update docs