Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pika for openSUSE:Factory checked in at 2023-06-27 23:18:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pika (Old) and /work/SRC/openSUSE:Factory/.python-pika.new.15902 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pika" Tue Jun 27 23:18:06 2023 rev:20 rq:1095667 version:1.3.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pika/python-pika.changes 2023-01-03 15:06:41.546974597 +0100 +++ /work/SRC/openSUSE:Factory/.python-pika.new.15902/python-pika.changes 2023-06-27 23:18:25.436012095 +0200 @@ -1,0 +2,6 @@ +Tue Jun 27 15:55:55 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 1.3.2: + * see https://github.com/pika/pika/milestone/22?closed=1 + +------------------------------------------------------------------- Old: ---- 1.3.1.tar.gz New: ---- 1.3.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pika.spec ++++++ --- /var/tmp/diff_new_pack.hWwRf9/_old 2023-06-27 23:18:25.940015061 +0200 +++ /var/tmp/diff_new_pack.hWwRf9/_new 2023-06-27 23:18:25.944015085 +0200 @@ -19,7 +19,7 @@ %define mod_name pika %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-%{mod_name} -Version: 1.3.1 +Version: 1.3.2 Release: 0 Summary: Pika Python AMQP Client Library License: BSD-3-Clause ++++++ 1.3.1.tar.gz -> 1.3.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/.github/workflows/main.yaml new/pika-1.3.2/.github/workflows/main.yaml --- old/pika-1.3.1/.github/workflows/main.yaml 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/.github/workflows/main.yaml 2023-05-05 16:08:54.000000000 +0200 @@ -7,6 +7,7 @@ pull_request: branches: - main + - 1.3.x jobs: build-win32: @@ -14,7 +15,7 @@ runs-on: windows-latest strategy: matrix: - python-version: ["3.7", "3.8", "3.9", "3.10"] + python-version: [3.7, 3.8, 3.9, '3.10', '3.11'] test-tls: [true, false] env: PIKA_TEST_TLS: ${{ matrix.test-tls }} @@ -47,7 +48,7 @@ runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.7", "3.8", "3.9", "3.10"] + python-version: [3.7, 3.8, 3.9, '3.10', '3.11'] services: rabbitmq: image: rabbitmq diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/.github/workflows/publish-pypi.yaml new/pika-1.3.2/.github/workflows/publish-pypi.yaml --- old/pika-1.3.1/.github/workflows/publish-pypi.yaml 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/.github/workflows/publish-pypi.yaml 2023-05-05 16:08:54.000000000 +0200 @@ -18,7 +18,7 @@ - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: '3.11' - name: Install pypa/build run: python -m pip install build twine --upgrade --user - name: Build a binary wheel and a source tarball @@ -26,7 +26,7 @@ - name: Check with twine run: twine check dist/* - name: Publish distribution ð¦ to PyPI - uses: pypa/gh-action-pypi-publish@master + uses: pypa/gh-action-pypi-publish@release/v1 with: password: ${{ secrets.pypi_api_token }} repository_url: ${{ inputs.pypi_repository_url }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/.gitignore new/pika-1.3.2/.gitignore --- old/pika-1.3.1/.gitignore 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/.gitignore 2023-05-05 16:08:54.000000000 +0200 @@ -19,3 +19,5 @@ venv*/ env/ testdata/*.conf +# pyright type information +typings/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/.readthedocs.yaml new/pika-1.3.2/.readthedocs.yaml --- old/pika-1.3.1/.readthedocs.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/pika-1.3.2/.readthedocs.yaml 2023-05-05 16:08:54.000000000 +0200 @@ -0,0 +1,29 @@ +# .readthedocs.yaml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.11" + # You can also specify other tool versions: + # nodejs: "19" + # rust: "1.64" + # golang: "1.19" + +# Build documentation in the docs/ directory with Sphinx +sphinx: + configuration: docs/conf.py + +# If using Sphinx, optionally build your docs in additional formats such as PDF +# formats: +# - pdf + +# Optionally declare the Python requirements required to build your docs +# python: +# install: +# - requirements: docs/requirements.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/CHANGELOG.md new/pika-1.3.2/CHANGELOG.md --- old/pika-1.3.1/CHANGELOG.md 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/CHANGELOG.md 2023-05-05 16:08:54.000000000 +0200 @@ -1,23 +1,23 @@ # Changelog -## [Unreleased](https://github.com/pika/pika/tree/HEAD) +## [1.3.1](https://github.com/pika/pika/tree/1.3.1) (2022-10-18) -[Full Changelog](https://github.com/pika/pika/compare/1.3.0...HEAD) +[Full Changelog](https://github.com/pika/pika/compare/1.3.0...1.3.1) **Closed issues:** - Open to funding? [\#1391](https://github.com/pika/pika/issues/1391) -- Update fallback SSL/TLS protocol version [\#1385](https://github.com/pika/pika/issues/1385) - pikaè¿ç§»æ°æ®å°redis [\#1378](https://github.com/pika/pika/issues/1378) - Improve release process a bit [\#1375](https://github.com/pika/pika/issues/1375) +- Update fallback SSL/TLS protocol version [\#1385](https://github.com/pika/pika/issues/1385) **Merged pull requests:** -- Update CHANGELOG.md process for releases. [\#1392](https://github.com/pika/pika/pull/1392) ([lukebakken](https://github.com/lukebakken)) - Fix a very minor typo in a source code comment [\#1388](https://github.com/pika/pika/pull/1388) ([martinky24](https://github.com/martinky24)) - Update connection module to fix strange character [\#1387](https://github.com/pika/pika/pull/1387) ([Zerpet](https://github.com/Zerpet)) -- Update connection module to use TLS v1.2 as fallback [\#1386](https://github.com/pika/pika/pull/1386) ([Zerpet](https://github.com/Zerpet)) - Long running publisher example [\#1384](https://github.com/pika/pika/pull/1384) ([karls](https://github.com/karls)) +- Update CHANGELOG.md process for releases. [\#1392](https://github.com/pika/pika/pull/1392) ([lukebakken](https://github.com/lukebakken)) +- Update connection module to use TLS v1.2 as fallback [\#1386](https://github.com/pika/pika/pull/1386) ([Zerpet](https://github.com/Zerpet)) - Add async callback examples [\#1383](https://github.com/pika/pika/pull/1383) ([lukebakken](https://github.com/lukebakken)) - Add requries-python to pyproject.toml [\#1376](https://github.com/pika/pika/pull/1376) ([gopackgo90](https://github.com/gopackgo90)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/README.rst new/pika-1.3.2/README.rst --- old/pika-1.3.1/README.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/README.rst 2023-05-05 16:08:54.000000000 +0200 @@ -9,7 +9,7 @@ Pika is a pure-Python implementation of the AMQP 0-9-1 protocol including RabbitMQ's extensions. -- Supports Python 3.4+ (`1.1.0` was the last version to support 2.7) +- Supports Python 3.7+ (`1.1.0` was the last version to support 2.7) - Since threads aren't appropriate to every situation, it doesn't require threads. Pika core takes care not to forbid them, either. The same goes for greenlets, callbacks, continuations, and generators. An instance of Pika's @@ -163,7 +163,7 @@ ------------------- Some RabbitMQ clients (Bunny, Java, .NET, Objective-C, Swift) provide a way to -automatically recover connection, its channels and topology (e.g. queues, +automatically recover a connection, its channels and topology (e.g. queues, bindings and consumers) after a network failure. Others require connection recovery to be performed by the application code and strive to make it a straightforward process. Pika falls into the second category. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/RELEASE.md new/pika-1.3.2/RELEASE.md --- old/pika-1.3.1/RELEASE.md 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/RELEASE.md 2023-05-05 16:08:54.000000000 +0200 @@ -2,43 +2,47 @@ * Ensure build is green * Update version in `pyproject.toml` and `pika/__init__.py` -* Update `CHANGELOG.md`. Be sure to use the `--since-tag 1.3.0` argument: - ``` - github_changelog_generator --token github_pat_MY_TOKEN --user pika --project pika --since-tag 1.3.0 - ``` - Review the generated file for invalid entries * Commit changes to `main` branch and push: ``` - git commit -a -m 'pika 1.3.1' && git push + git commit -a -m 'pika 1.3.2' && git push ``` * Ensure build is green * Tag version (using your GPG keyid) and push: ``` - git tag -a -s -u B1B82CC0CF84BA70147EBD05D99DE30E43EAE440 -m 'pika 1.3.1' '1.3.1' && git push --tags + git tag -a -s -u B1B82CC0CF84BA70147EBD05D99DE30E43EAE440 -m 'pika 1.3.2' '1.3.2' && git push --tags ``` * Ensure build is green (if one triggered) +* Update `CHANGELOG.md`. Be sure to use the `--since-tag 1.3.1` argument: + ``` + github_changelog_generator --token github_pat_MY_TOKEN --user pika --project pika --since-tag 1.3.1 + ``` + Review the generated file for invalid entries +* Commit changes to `main` branch and push: + ``` + git commit -a -m 'pika 1.3.2 CHANGELOG' && git push + ``` * Note the release's milestone number, then create release via GitHub Release UI or `gh` command like: ``` # This creates artifacts to be uploaded: python -m build --sdist --wheel --outdir dist/ . # This creates the release on GitHub: - gh release create '1.3.1' --notes 'https://pypi.org/project/pika/1.3.1/ | [GitHub milestone](https://github.com/pika/pika/milestone/19?closed=1)' ./dist/* + gh release create '1.3.2' --notes 'https://pypi.org/project/pika/1.3.2/ | [GitHub milestone](https://github.com/pika/pika/milestone/20?closed=1)' ./dist/* ``` * Ensure the publish build succeeded. Example success output looks like this: ``` - Checking dist/pika-1.3.0rc2-py2.py3-none-any.whl: PASSED - Checking dist/pika-1.3.0rc2.tar.gz: PASSED + Checking dist/pika-1.3.2-py2.py3-none-any.whl: PASSED + Checking dist/pika-1.3.2.tar.gz: PASSED Uploading distributions to https://upload.pypi.org/legacy/ - Uploading pika-1.3.0rc2-py2.py3-none-any.whl + Uploading pika-1.3.2-py2.py3-none-any.whl ... ... ... View at: - https://pypi.org/project/pika/1.3.0rc2/ + https://pypi.org/project/pika/1.3.2/ ``` -* View the release on PyPI: https://pypi.org/project/pika/1.3.0/ +* View the release on PyPI: https://pypi.org/project/pika/1.3.2/ * Ensure the release works! * Start RabbitMQ ``` @@ -49,7 +53,7 @@ cd path/to/pika/examples python -m venv venv source ./venv/bin/activate - pip install pika==1.3.0 + pip install pika==1.3.2 python ./asynchronous_publisher_example.py ``` @@ -61,14 +65,14 @@ ``` Warning: PR 46 merge commit was not found in the release branch or tagged git history and no rebased SHA comment was found -/home/lbakken/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator_fetcher.rb:86:in `block in associate_tagged_prs': No merge sha found for PR 46 via the GitHub API (StandardError) - from /home/lbakken/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator_fetcher.rb:68:in `reject' - from /home/lbakken/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator_fetcher.rb:68:in `associate_tagged_prs' - from /home/lbakken/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator_fetcher.rb:48:in `add_first_occurring_tag_to_prs' - from /home/lbakken/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator.rb:152:in `fetch_issues_and_pr' - from /home/lbakken/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator.rb:55:in `block in compound_changelog' - from /home/lbakken/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/async-2.2.1/lib/async/task.rb:107:in `block in run' - from /home/lbakken/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/async-2.2.1/lib/async/task.rb:243:in `block in schedule' +/path/to/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator_fetcher.rb:86:in `block in associate_tagged_prs': No merge sha found for PR 46 via the GitHub API (StandardError) + from /path/to/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator_fetcher.rb:68:in `reject' + from /path/to/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator_fetcher.rb:68:in `associate_tagged_prs' + from /path/to/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator_fetcher.rb:48:in `add_first_occurring_tag_to_prs' + from /path/to/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator.rb:152:in `fetch_issues_and_pr' + from /path/to/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/github_changelog_generator-1.16.4/lib/github_changelog_generator/generator/generator.rb:55:in `block in compound_changelog' + from /path/to/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/async-2.2.1/lib/async/task.rb:107:in `block in run' + from /path/to/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/async-2.2.1/lib/async/task.rb:243:in `block in schedule' ``` ...you will have to edit the `lib/github_changelog_generator/generator/generator_fetcher.rb` file to change the `raise` to a `STDERR.puts`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/contributors.rst new/pika-1.3.2/docs/contributors.rst --- old/pika-1.3.1/docs/contributors.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/contributors.rst 2023-05-05 16:08:54.000000000 +0200 @@ -1,6 +1,6 @@ Contributors ============ -The following people have directly contributes code by way of new features and/or bug fixes to Pika: +The following people have directly contributed code by way of new features and/or bug fixes to Pika: - Gavin M. Roy - Tony Garnock-Jones diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/examples/asyncio_consumer.rst new/pika-1.3.2/docs/examples/asyncio_consumer.rst --- old/pika-1.3.1/docs/examples/asyncio_consumer.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/examples/asyncio_consumer.rst 2023-05-05 16:08:54.000000000 +0200 @@ -1,5 +1,5 @@ -Asyncio Consumer -================ +Asyncio consumer example +========================= The following example implements a consumer using the :class:`Asyncio adapter <pika.adapters.asyncio_connection.AsyncioConnection>` for the `Asyncio library diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/examples/tls_mutual_authentication.rst new/pika-1.3.2/docs/examples/tls_mutual_authentication.rst --- old/pika-1.3.1/docs/examples/tls_mutual_authentication.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/examples/tls_mutual_authentication.rst 2023-05-05 16:08:54.000000000 +0200 @@ -1,7 +1,7 @@ TLS parameters example ====================== -This example demonstrates a TLS session with RabbitMQ using mutual authentication (server and client authentication). It was tested against RabbitMQ 3.7.4, using Python 3.6.5 and Pika 1.0.0. +This example demonstrates a TLS session with RabbitMQ using mutual authentication (server and client authentication). See `the RabbitMQ TLS/SSL documentation <https://www.rabbitmq.com/ssl.html>`_ for certificate generation and RabbitMQ TLS configuration. Please note that the `RabbitMQ TLS (x509 certificate) authentication mechanism <https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl>`_ must be enabled for these examples to work. @@ -12,8 +12,10 @@ import ssl logging.basicConfig(level=logging.INFO) + context = ssl.create_default_context( cafile="PIKA_DIR/testdata/certs/ca_certificate.pem") + context.verify_mode = ssl.CERT_REQUIRED context.load_cert_chain("PIKA_DIR/testdata/certs/client_certificate.pem", "PIKA_DIR/testdata/certs/client_key.pem") ssl_options = pika.SSLOptions(context, "localhost") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/examples/tls_server_authentication.rst new/pika-1.3.2/docs/examples/tls_server_authentication.rst --- old/pika-1.3.1/docs/examples/tls_server_authentication.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/examples/tls_server_authentication.rst 2023-05-05 16:08:54.000000000 +0200 @@ -2,8 +2,6 @@ ============================= This examples demonstrates a TLS session with RabbitMQ using server authentication. -It was tested against RabbitMQ 3.6.10, using Python 3.6.1 and pre-release Pika `0.11.0` - Note the use of `ssl.PROTOCOL_TLSv1_2`. The recent versions of RabbitMQ disable older versions of SSL due to security vulnerabilities. @@ -18,23 +16,26 @@ logging.basicConfig(level=logging.INFO) - context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) + context = ssl.create_default_context( + cafile="/Users/me/tls-gen/basic/result/ca_certificate.pem") context.verify_mode = ssl.CERT_REQUIRED - context.load_verify_locations('/Users/me/tls-gen/basic/testca/cacert.pem') - - cp = pika.ConnectionParameters(ssl_options=pika.SSLOptions(context)) - - conn = pika.BlockingConnection(cp) - ch = conn.channel() - print(ch.queue_declare("sslq")) - ch.publish("", "sslq", "abc") - print(ch.basic_get("sslq")) + context.load_cert_chain("/Users/me/tls-gen/result/client_certificate.pem", + "/Users/me/tls-gen/result/client_key.pem") + ssl_options = pika.SSLOptions(context, "localhost") + conn_params = pika.ConnectionParameters(port=5671, + ssl_options=ssl_options) + + with pika.BlockingConnection(conn_params) as conn: + ch = conn.channel() + print(ch.queue_declare("sslq")) + ch.publish("", "sslq", "abc") + print(ch.basic_get("sslq")) rabbitmq.conf:: %% In this example, both the client and RabbitMQ server are assumed to be running on the same machine - %% with a self-signed set of certificates generated using https://github.com/michaelklishin/tls-gen. + %% with a self-signed set of certificates generated using https://github.com/rabbitmq/tls-gen. %% %% To find out the default rabbitmq.conf location, see https://www.rabbitmq.com/configure.html. %% @@ -46,8 +47,8 @@ listeners.ssl.default = 5671 - ssl_options.cacertfile = /Users/me/tls-gen/basic//ca_certificate.pem - ssl_options.certfile = /Users/me/tls-gen/basic//server_certificate.pem - ssl_options.keyfile = /Users/me/tls-gen/basic/server_key.pem + ssl_options.cacertfile = /Users/me/tls-gen/basic/result/ca_certificate.pem + ssl_options.certfile = /Users/me/tls-gen/basic/result/server_certificate.pem + ssl_options.keyfile = /Users/me/tls-gen/basic/result/server_key.pem ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/examples/tornado_consumer.rst new/pika-1.3.2/docs/examples/tornado_consumer.rst --- old/pika-1.3.1/docs/examples/tornado_consumer.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/examples/tornado_consumer.rst 2023-05-05 16:08:54.000000000 +0200 @@ -1,5 +1,5 @@ -Tornado Consumer -================ +Tornado consumer example +======================== The following example implements a consumer using the :class:`Tornado adapter <pika.adapters.tornado_connection.TornadoConnection>` for the `Tornado framework <http://tornadoweb.org>`_ that will respond to RPC commands sent from RabbitMQ. For example, it will reconnect if RabbitMQ closes the connection and will shutdown if RabbitMQ cancels the consumer or closes the channel. While it may look intimidating, each method is very short and represents a individual actions that a consumer can do. consumer.py:: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/examples/twisted_example.rst new/pika-1.3.2/docs/examples/twisted_example.rst --- old/pika-1.3.1/docs/examples/twisted_example.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/examples/twisted_example.rst 2023-05-05 16:08:54.000000000 +0200 @@ -1,4 +1,4 @@ -Twisted Consumer Example +Twisted consumer example ======================== Example of writing an application using the :py:class:`Twisted connection adapter <pika.adapters.twisted_connection.TwistedProtocolConnection>`::. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/examples.rst new/pika-1.3.2/docs/examples.rst --- old/pika-1.3.1/docs/examples.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/examples.rst 2023-05-05 16:08:54.000000000 +0200 @@ -18,8 +18,10 @@ examples/blocking_publish_mandatory examples/asynchronous_consumer_example examples/asynchronous_publisher_example + examples/asyncio_consumer examples/twisted_example examples/tornado_consumer examples/tls_mutual_authentication examples/tls_server_authentication examples/heartbeat_and_blocked_timeouts + examples/direct_reply_to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/faq.rst new/pika-1.3.2/docs/faq.rst --- old/pika-1.3.1/docs/faq.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/faq.rst 2023-05-05 16:08:54.000000000 +0200 @@ -3,7 +3,7 @@ - Is Pika thread safe? - Pika does not have any notion of threading in the code. If you want to use Pika with threading, make sure you have a Pika connection per thread, created in that thread. It is not safe to share one Pika connection across threads, with one exception: you may call the connection method `add_callback_threadsafe` from another thread to schedule a callback within an active pika connection. + Pika does not have any notion of threading in the code. If you want to use Pika with threading, make sure you have a Pika connection per thread, created in that thread. It is not safe to share one Pika connection across threads, with one exception: you may call the connection method `add_callback_threadsafe` from another thread to schedule a callback within an active pika connection. See :doc:`connection adapter <modules/adapters/index>` for more details - How do I report a bug with Pika? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/index.rst new/pika-1.3.2/docs/index.rst --- old/pika-1.3.1/docs/index.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/index.rst 2023-05-05 16:08:54.000000000 +0200 @@ -27,7 +27,6 @@ examples faq contributors - version_history Indices and tables ------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/modules/adapters/asyncio.rst new/pika-1.3.2/docs/modules/adapters/asyncio.rst --- old/pika-1.3.1/docs/modules/adapters/asyncio.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/modules/adapters/asyncio.rst 2023-05-05 16:08:54.000000000 +0200 @@ -1,9 +1,16 @@ -asyncio Connection Adapter +Asyncio Connection Adapter ========================== .. automodule:: pika.adapters.asyncio_connection Be sure to check out the :doc:`asynchronous examples </examples>` including the asyncio specific :doc:`consumer </examples/asyncio_consumer>` example. +Interacting with Pika from another thread +----------------------------------------- +``pika.adapters.asyncio_connection.AsyncioConnection``'s I/O loop exposes ``call_soon_threadsafe()`` to allow interacting with Pika from another thread. + +Class Reference +---------------- + .. autoclass:: pika.adapters.asyncio_connection.AsyncioConnection :members: :inherited-members: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/modules/adapters/blocking.rst new/pika-1.3.2/docs/modules/adapters/blocking.rst --- old/pika-1.3.1/docs/modules/adapters/blocking.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/modules/adapters/blocking.rst 2023-05-05 16:08:54.000000000 +0200 @@ -1,9 +1,17 @@ -BlockingConnection ------------------- +Blocking Connection Adapter +=========================== .. automodule:: pika.adapters.blocking_connection Be sure to check out examples in :doc:`/examples`. +Interacting with Pika from another thread +----------------------------------------- + +``pika.BlockingConnection`` abstracts its I/O loop from the application and thus exposes ``pika.BlockingConnection.add_callback_threadsafe()`` to allow interacting with Pika from another thread. + +Class Reference +---------------- + .. autoclass:: pika.adapters.blocking_connection.BlockingConnection :members: :inherited-members: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/modules/adapters/gevent.rst new/pika-1.3.2/docs/modules/adapters/gevent.rst --- old/pika-1.3.1/docs/modules/adapters/gevent.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/pika-1.3.2/docs/modules/adapters/gevent.rst 2023-05-05 16:08:54.000000000 +0200 @@ -0,0 +1,12 @@ +Gevent Connection Adapter +========================== +.. automodule:: pika.adapters.gevent_connection + +Be sure to check out the :doc:`asynchronous examples </examples>`. +There is no specific Gevent example yet. + +Class Reference +---------------- +.. autoclass:: pika.adapters.gevent_connection.GeventConnection + :members: + :inherited-members: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/modules/adapters/index.rst new/pika-1.3.2/docs/modules/adapters/index.rst --- old/pika-1.3.1/docs/modules/adapters/index.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/modules/adapters/index.rst 2023-05-05 16:08:54.000000000 +0200 @@ -11,5 +11,122 @@ blocking select + asyncio tornado twisted + gevent + +Requesting message acknowledgements from another thread +------------------------------------------------------- +The single-threaded usage constraint of an individual Pika connection adapter +instance may result in a dropped AMQP/stream connection due to AMQP heartbeat +timeout in consumers that take a long time to process an incoming message. A +common solution is to delegate processing of the incoming messages to another +thread, while the connection adapter's thread continues to service its I/O +loop's message pump, permitting AMQP heartbeats and other I/O to be serviced in +a timely fashion. + +Messages processed in another thread may not be acknowledged directly from that +thread, since all accesses to the connection adapter instance must be from a +single thread, which is the thread running the adapter's I/O loop. This is +accomplished by requesting a callback to be executed in the adapter's +I/O loop thread. For example, the callback function's implementation might look +like this: + +.. code :: python + + def ack_message(channel, delivery_tag): + """Note that `channel` must be the same Pika channel instance via which + the message being acknowledged was retrieved (AMQP protocol constraint). + """ + if channel.is_open: + channel.basic_ack(delivery_tag) + else: + # Channel is already closed, so we can't acknowledge this message; + # log and/or do something that makes sense for your app in this case. + pass + +The code running in the other thread may request the ``ack_message()`` function +to be executed in the connection adapter's I/O loop thread using an +adapter-specific mechanism: + +- ``pika.BlockingConnection`` abstracts its I/O loop from the application and + thus exposes ``pika.BlockingConnection.add_callback_threadsafe()``. Refer to + this method's docstring for additional information. For example: + + .. code :: python + + connection.add_callback_threadsafe(functools.partial(ack_message, channel, delivery_tag)) + +Please see the documentation of other adapters for their specific methods. + +This threadsafe callback request mechanism may also be used to delegate +publishing of messages, etc., from a background thread to the connection +adapter's thread. + +Connection recovery +------------------- + +The Pika library requires connection recovery to be performed by the application +code and strive to make it a straightforward process. Pika falls into the second category. + +Different connection adapters take different approaches to connection recovery. + +For ``pika.BlockingConnection`` adapter exception handling can be used to check +for connection errors. Here is a very basic example: + +.. code :: python + + import pika + + while True: + try: + connection = pika.BlockingConnection() + channel = connection.channel() + channel.basic_consume('test', on_message_callback) + channel.start_consuming() + # Don't recover if connection was closed by broker + except pika.exceptions.ConnectionClosedByBroker: + break + # Don't recover on channel errors + except pika.exceptions.AMQPChannelError: + break + # Recover on all other connection errors + except pika.exceptions.AMQPConnectionError: + continue + +This example can be found in `examples/consume_recover.py`. + +Generic operation retry libraries such as +`retry <https://github.com/invl/retry>`_ can be used. Decorators make it +possible to configure some additional recovery behaviours, like delays between +retries and limiting the number of retries: + +.. code :: python + + from retry import retry + + + @retry(pika.exceptions.AMQPConnectionError, delay=5, jitter=(1, 3)) + def consume(): + connection = pika.BlockingConnection() + channel = connection.channel() + channel.basic_consume('test', on_message_callback) + + try: + channel.start_consuming() + # Don't recover connections closed by server + except pika.exceptions.ConnectionClosedByBroker: + pass + + + consume() + +This example can be found in `examples/consume_recover_retry.py`. + +For asynchronous adapters, use ``on_close_callback`` to react to connection +failure events. This callback can be used to clean up and recover the +connection. + +An example of recovery using ``on_close_callback`` can be found in +`examples/asynchronous_consumer_example.py`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/modules/adapters/select.rst new/pika-1.3.2/docs/modules/adapters/select.rst --- old/pika-1.3.1/docs/modules/adapters/select.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/modules/adapters/select.rst 2023-05-05 16:08:54.000000000 +0200 @@ -1,7 +1,18 @@ Select Connection Adapter ========================== +Asynchronous adapter without third-party dependencies. + + +Interacting with Pika from another thread +----------------------------------------- + ``pika.SelectConnection``'s I/O loop provides ``add_callback_threadsafe()`` to allow interacting with Pika from another thread. + +Class Reference +---------------- .. automodule:: pika.adapters.select_connection + + .. autoclass:: pika.adapters.select_connection.SelectConnection :members: :inherited-members: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/modules/adapters/tornado.rst new/pika-1.3.2/docs/modules/adapters/tornado.rst --- old/pika-1.3.1/docs/modules/adapters/tornado.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/modules/adapters/tornado.rst 2023-05-05 16:08:54.000000000 +0200 @@ -4,6 +4,13 @@ Be sure to check out the :doc:`asynchronous examples </examples>` including the Tornado specific :doc:`consumer </examples/tornado_consumer>` example. +Interacting with Pika from another thread +----------------------------------------- +```pika.adapters.tornado_connection.TornadoConnection``'s I/O loop provides + ``add_callback()`` to allow interacting with Pika from another thread. + +Class Reference +---------------- .. autoclass:: pika.adapters.tornado_connection.TornadoConnection :members: :inherited-members: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/docs/modules/adapters/twisted.rst new/pika-1.3.2/docs/modules/adapters/twisted.rst --- old/pika-1.3.1/docs/modules/adapters/twisted.rst 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/docs/modules/adapters/twisted.rst 2023-05-05 16:08:54.000000000 +0200 @@ -2,6 +2,8 @@ ========================== .. automodule:: pika.adapters.twisted_connection +Class Reference +---------------- .. autoclass:: pika.adapters.twisted_connection.TwistedProtocolConnection :members: :inherited-members: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/__init__.py new/pika-1.3.2/pika/__init__.py --- old/pika-1.3.1/pika/__init__.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/__init__.py 2023-05-05 16:08:54.000000000 +0200 @@ -1,4 +1,4 @@ -__version__ = '1.3.1' +__version__ = '1.3.2' import logging diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/adapters/asyncio_connection.py new/pika-1.3.2/pika/adapters/asyncio_connection.py --- old/pika-1.3.1/pika/adapters/asyncio_connection.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/adapters/asyncio_connection.py 2023-05-05 16:08:54.000000000 +0200 @@ -69,7 +69,7 @@ custom_ioloop=None, workflow=None): """Implement - :py:classmethod:`pika.adapters.BaseConnection.create_connection()`. + :py:classmethod::`pika.adapters.BaseConnection.create_connection()`. """ nbio = _AsyncioIOServicesAdapter(custom_ioloop) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/adapters/blocking_connection.py new/pika-1.3.2/pika/adapters/blocking_connection.py --- old/pika-1.3.1/pika/adapters/blocking_connection.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/adapters/blocking_connection.py 2023-05-05 16:08:54.000000000 +0200 @@ -670,7 +670,7 @@ :param callable callback: Callback to call on Connection.Unblocked`, having the signature `callback(connection, pika.frame.Method)`, where connection is the `BlockingConnection` instance and the method - frame's `method` member is of type `pika.spec.Connection.Unblocked` + frame's `method` member is of type `pika.spec.Connection.Unblocked` """ self._impl.add_on_connection_unblocked_callback( @@ -1586,10 +1586,10 @@ :param callable callback: The method to call on callback with the signature callback(channel, method, properties, body), where - - channel: pika.Channel - - method: pika.spec.Basic.Return - - properties: pika.spec.BasicProperties - - body: bytes + - channel: pika.Channel + - method: pika.spec.Basic.Return + - properties: pika.spec.BasicProperties + - body: bytes """ self._impl.add_on_return_callback( @@ -1622,10 +1622,10 @@ :param callable on_message_callback: Required function for dispatching messages to user, having the signature: on_message_callback(channel, method, properties, body) - - channel: BlockingChannel - - method: spec.Basic.Deliver - - properties: spec.BasicProperties - - body: bytes + - channel: BlockingChannel + - method: spec.Basic.Deliver + - properties: spec.BasicProperties + - body: bytes :param bool auto_ack: if set to True, automatic acknowledgement mode will be used (see http://www.rabbitmq.com/confirms.html). This corresponds with the 'no_ack' parameter in the basic.consume AMQP 0.9.1 @@ -1750,10 +1750,10 @@ the cancellation (this is done instead of via consumer's callback in order to prevent reentrancy/recursion. Each message is four-tuple: (channel, method, properties, body) - - channel: BlockingChannel - - method: spec.Basic.Deliver - - properties: spec.BasicProperties - - body: bytes + - channel: BlockingChannel + - method: spec.Basic.Deliver + - properties: spec.BasicProperties + - body: bytes :rtype: list """ try: @@ -1910,7 +1910,7 @@ Example: :: for method, properties, body in channel.consume('queue'): - print body + print(body) channel.basic_ack(method.delivery_tag) You should call `BlockingChannel.cancel()` when you escape out of the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/adapters/gevent_connection.py new/pika-1.3.2/pika/adapters/gevent_connection.py --- old/pika-1.3.1/pika/adapters/gevent_connection.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/adapters/gevent_connection.py 2023-05-05 16:08:54.000000000 +0200 @@ -92,7 +92,7 @@ custom_ioloop=None, workflow=None): """Implement - :py:classmethod:`pika.adapters.BaseConnection.create_connection()`. + :py:classmethod::`pika.adapters.BaseConnection.create_connection()`. """ custom_ioloop = (custom_ioloop or _GeventSelectorIOLoop(gevent.get_hub())) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/adapters/select_connection.py new/pika-1.3.2/pika/adapters/select_connection.py --- old/pika-1.3.1/pika/adapters/select_connection.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/adapters/select_connection.py 2023-05-05 16:08:54.000000000 +0200 @@ -113,7 +113,7 @@ custom_ioloop=None, workflow=None): """Implement - :py:classmethod:`pika.adapters.BaseConnection.create_connection()`. + :py:classmethod::`pika.adapters.BaseConnection.create_connection()`. """ nbio = SelectorIOServicesAdapter(custom_ioloop or IOLoop()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/adapters/tornado_connection.py new/pika-1.3.2/pika/adapters/tornado_connection.py --- old/pika-1.3.1/pika/adapters/tornado_connection.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/adapters/tornado_connection.py 2023-05-05 16:08:54.000000000 +0200 @@ -66,7 +66,7 @@ custom_ioloop=None, workflow=None): """Implement - :py:classmethod:`pika.adapters.BaseConnection.create_connection()`. + :py:classmethod::`pika.adapters.BaseConnection.create_connection()`. """ nbio = selector_ioloop_adapter.SelectorIOServicesAdapter( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/adapters/twisted_connection.py new/pika-1.3.2/pika/adapters/twisted_connection.py --- old/pika-1.3.1/pika/adapters/twisted_connection.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/adapters/twisted_connection.py 2023-05-05 16:08:54.000000000 +0200 @@ -303,12 +303,11 @@ :param callable callback: The method to call on callback with the message as only argument. The message is a named tuple with - the following attributes: - channel: this TwistedChannel - method: pika.spec.Basic.Return - properties: pika.spec.BasicProperties - body: bytes - + the following attributes + - channel: this TwistedChannel + - method: pika.spec.Basic.Return + - properties: pika.spec.BasicProperties + - body: bytes """ self._channel.add_on_return_callback( lambda _channel, method, properties, body: callback( @@ -402,10 +401,10 @@ use its :meth:`get() <ClosableDeferredQueue.get>` method to fetch an individual message, which will return a Deferred firing with a namedtuple whose attributes are: - - channel: this TwistedChannel - - method: pika.spec.Basic.Deliver - - properties: pika.spec.BasicProperties - - body: bytes + - channel: this TwistedChannel + - method: pika.spec.Basic.Deliver + - properties: pika.spec.BasicProperties + - body: bytes :rtype: Deferred """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/channel.py new/pika-1.3.2/pika/channel.py --- old/pika-1.3.1/pika/channel.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/channel.py 2023-05-05 16:08:54.000000000 +0200 @@ -174,10 +174,10 @@ :param callable callback: The function to call, having the signature callback(channel, method, properties, body) where - - channel: pika.channel.Channel - - method: pika.spec.Basic.Return - - properties: pika.spec.BasicProperties - - body: bytes + - channel: pika.channel.Channel + - method: pika.spec.Basic.Return + - properties: pika.spec.BasicProperties + - body: bytes """ self.callbacks.add(self.channel_number, '_on_return', callback, False) @@ -284,10 +284,10 @@ :param callable on_message_callback: The function to call when consuming with the signature on_message_callback(channel, method, properties, body), where - - channel: pika.channel.Channel - - method: pika.spec.Basic.Deliver - - properties: pika.spec.BasicProperties - - body: bytes + - channel: pika.channel.Channel + - method: pika.spec.Basic.Deliver + - properties: pika.spec.BasicProperties + - body: bytes :param bool auto_ack: if set to True, automatic acknowledgement mode will be used (see http://www.rabbitmq.com/confirms.html). This corresponds with the 'no_ack' parameter in the basic.consume @@ -359,10 +359,10 @@ channel :param callable callback: The callback to call with a message that has the signature callback(channel, method, properties, body), where: - - channel: pika.channel.Channel - - method: pika.spec.Basic.GetOk - - properties: pika.spec.BasicProperties - - body: bytes + - channel: pika.channel.Channel + - method: pika.spec.Basic.GetOk + - properties: pika.spec.BasicProperties + - body: bytes :param bool auto_ack: Tell the broker to not expect a reply :raises ValueError: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/connection.py new/pika-1.3.2/pika/connection.py --- old/pika-1.3.1/pika/connection.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/connection.py 2023-05-05 16:08:54.000000000 +0200 @@ -533,9 +533,7 @@ class ConnectionParameters(Parameters): """Connection parameters object that is passed into the connection adapter - upon construction. - - """ + upon construction.""" # Protect against accidental assignment of an invalid attribute __slots__ = () @@ -891,8 +889,8 @@ if opts is None: if self.ssl_options is not None: raise ValueError( - 'Specified ssl_options=None URL arg is inconsistent with ' - 'the specified https URL scheme.') + 'Specified ssl_options=None URI arg is inconsistent with ' + 'the specified amqps URI scheme.') else: # Older versions of Pika would take the opts dict and pass it # directly as kwargs to the deprecated ssl.wrap_socket method. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/exchange_type.py new/pika-1.3.2/pika/exchange_type.py --- old/pika-1.3.1/pika/exchange_type.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/exchange_type.py 2023-05-05 16:08:54.000000000 +0200 @@ -1,8 +1,18 @@ -from enum import Enum +try: + from enum import StrEnum # available from Python 3.11 -class ExchangeType(Enum) : - direct = 'direct' - fanout = 'fanout' - headers = 'headers' - topic = 'topic' + class ExchangeType(StrEnum): + direct = 'direct' + fanout = 'fanout' + headers = 'headers' + topic = 'topic' +except ImportError: + from enum import Enum + + + class ExchangeType(str, Enum): + direct = 'direct' + fanout = 'fanout' + headers = 'headers' + topic = 'topic' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pika/spec.py new/pika-1.3.2/pika/spec.py --- old/pika-1.3.1/pika/spec.py 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pika/spec.py 2023-05-05 16:08:54.000000000 +0200 @@ -4,7 +4,6 @@ This module implements the constants and classes that comprise AMQP protocol level constructs. It should rarely be directly referenced outside of Pika's own internal use. - .. note:: Auto-generated code by codegen.py, do not edit directly. Pull requests to this file without accompanying ``utils/codegen.py`` changes will be rejected. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/pyproject.toml new/pika-1.3.2/pyproject.toml --- old/pika-1.3.1/pyproject.toml 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/pyproject.toml 2023-05-05 16:08:54.000000000 +0200 @@ -4,7 +4,7 @@ [project] name = "pika" -version = "1.3.1" +version = "1.3.2" maintainers = [ {name = "Gavin M. Roy", email = "gavinm...@gmail.com"}, {name = "Luke Bakken", email = "lukerbak...@gmail.com"} @@ -18,13 +18,11 @@ "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: Jython", "Programming Language :: Python :: Implementation :: PyPy", @@ -35,7 +33,7 @@ "Topic :: System :: Networking", ] dependencies = [] -requires-python = ">=3.4" +requires-python = ">=3.7" [project.readme] file = "README.rst" @@ -50,6 +48,8 @@ tornado = ["tornado"] twisted = ["twisted"] +[tool.pyright] + [tool.setuptools] zip-safe = true include-package-data = false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pika-1.3.1/testdata/versions.json new/pika-1.3.2/testdata/versions.json --- old/pika-1.3.1/testdata/versions.json 2022-10-19 01:06:21.000000000 +0200 +++ new/pika-1.3.2/testdata/versions.json 2023-05-05 16:08:54.000000000 +0200 @@ -1,4 +1,4 @@ { - "erlang": "25.0.2", - "rabbitmq": "3.10.5" + "erlang": "25.1.2", + "rabbitmq": "3.11.3" }