rabbitmq-amqp-python-client 2.0.0a1__tar.gz → 2.0.0a2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.github/workflows/publish-pypi.yaml +6 -7
  2. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/Makefile +1 -1
  3. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/PKG-INFO +4 -4
  4. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/README.md +3 -3
  5. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/auto_reconnection.py +1 -1
  6. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/basic_connection.py +3 -3
  7. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/console_application.py +8 -8
  8. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/consumer_example.py +2 -2
  9. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/direct_reply_to_example.py +4 -4
  10. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/management_example.py +3 -3
  11. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/performance_test.py +6 -6
  12. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/presettled_consumer_example.py +3 -3
  13. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/publisher_example.py +2 -2
  14. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/quorum_single_active_consumer.py +1 -1
  15. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/rejection_reason_example.py +2 -2
  16. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/stream_filtering.py +2 -2
  17. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/tls_connection.py +1 -1
  18. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/pyproject.toml +1 -1
  19. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/__init__.py +1 -1
  20. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/logging_utils.py +4 -4
  21. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_client_interpolation_integration.py +3 -3
  22. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_client_stream_interpolation_integration.py +4 -4
  23. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_connection_integration.py +1 -1
  24. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_consumer_integration.py +3 -3
  25. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_management_integration.py +4 -4
  26. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_performance_test_integration.py +2 -2
  27. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_publisher_integration.py +3 -3
  28. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_reconnection_integration.py +2 -2
  29. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_session_link_integration.py +3 -3
  30. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_tls_integration.py +1 -1
  31. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/conftest.py +3 -3
  32. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/fake_broker.py +4 -4
  33. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_amqp10_validation.py +3 -3
  34. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_connection.py +7 -7
  35. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_console_application.py +5 -5
  36. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_consumer.py +10 -10
  37. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_delivery_state.py +3 -3
  38. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_encoding.py +2 -2
  39. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_frames.py +3 -3
  40. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_link.py +3 -3
  41. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_management.py +4 -4
  42. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_management_builders.py +2 -2
  43. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_message.py +3 -3
  44. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_package_exports.py +3 -3
  45. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_performance_test.py +5 -5
  46. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_performatives.py +4 -4
  47. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_publisher.py +4 -4
  48. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_reconnection.py +10 -10
  49. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_sasl.py +3 -3
  50. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/test_session.py +4 -4
  51. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/certs/ca.p12 +0 -0
  52. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/certs/ca_certificate.pem +0 -0
  53. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/certs/ca_key.pem +0 -0
  54. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/certs/client_localhost.p12 +0 -0
  55. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/certs/client_localhost_certificate.pem +0 -0
  56. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/certs/client_localhost_key.pem +0 -0
  57. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/certs/server_localhost.p12 +0 -0
  58. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/certs/server_localhost_certificate.pem +0 -0
  59. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/certs/server_localhost_key.pem +0 -0
  60. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/ubuntu/advanced.config +0 -0
  61. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/ubuntu/enabled_plugins +0 -0
  62. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/ubuntu/gha-log-check.sh +0 -0
  63. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/ubuntu/gha-setup.sh +0 -0
  64. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/ubuntu/log/.gitkeep +0 -0
  65. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.ci/ubuntu/rabbitmq.conf +0 -0
  66. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.github/release.yml +0 -0
  67. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.github/workflows/build-test.yaml +0 -0
  68. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.github/workflows/publish_release.yaml +0 -0
  69. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/.gitignore +0 -0
  70. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/create_tag.sh +0 -0
  71. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/docs/examples/README.md +0 -0
  72. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/connection.py +0 -0
  73. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/constants.py +0 -0
  74. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/consumer.py +0 -0
  75. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/exceptions.py +0 -0
  76. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/link.py +0 -0
  77. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/management.py +0 -0
  78. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/publisher.py +0 -0
  79. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/reconnection.py +0 -0
  80. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/session.py +0 -0
  81. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/wire/__init__.py +0 -0
  82. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/wire/delivery_state.py +0 -0
  83. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/wire/encoding.py +0 -0
  84. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/wire/frames.py +0 -0
  85. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/wire/message.py +0 -0
  86. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/wire/performatives.py +0 -0
  87. {rabbitmq_amqp_python_client-2.0.0a1/src → rabbitmq_amqp_python_client-2.0.0a2/rabbitmq_amqp_python_client}/wire/sasl.py +0 -0
  88. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/__init__.py +0 -0
  89. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/__init__.py +0 -0
  90. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/conftest.py +0 -0
  91. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/integration/test_console_application_integration.py +0 -0
  92. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/__init__.py +0 -0
  93. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/empty_message.amqp +0 -0
  94. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/header_amqpvalue_message.amqp +0 -0
  95. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/message_body_250.amqp +0 -0
  96. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/message_body_700.amqp +0 -0
  97. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/message_from_version_1_0_0.amqp +0 -0
  98. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/message_random_application_properties_300.amqp +0 -0
  99. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/message_random_application_properties_500.amqp +0 -0
  100. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/message_random_application_properties_properties_900.amqp +0 -0
  101. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/message_unicode_message.amqp +0 -0
  102. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/nil_and_types.amqp +0 -0
  103. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/shovel_annotations.amqp +0 -0
  104. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/static_test_message_compare.amqp +0 -0
  105. {rabbitmq_amqp_python_client-2.0.0a1 → rabbitmq_amqp_python_client-2.0.0a2}/tests/unit/resources/amqp10_validation/uuid_message.amqp +0 -0
@@ -25,14 +25,13 @@ jobs:
25
25
  id-token: write
26
26
  steps:
27
27
  - uses: actions/checkout@v3
28
- - name: build with poetry
29
- env:
30
- REPO: ${{ inputs.pypi_repository_url }}
28
+ - uses: actions/setup-python@v5
29
+ with:
30
+ python-version: "3.12"
31
+ - name: build
31
32
  run: |
32
- curl -sSL https://install.python-poetry.org | python3 -
33
- export PATH="/home/runner/.local/bin:$PATH"
34
- poetry config repositories.test-pypi $REPO
35
- poetry build
33
+ python3 -m pip install build
34
+ python3 -m build
36
35
  # retrieve your distributions here
37
36
  - name: Publish package distributions to PyPI
38
37
  uses: pypa/gh-action-pypi-publish@release/v1
@@ -21,7 +21,7 @@ lint:
21
21
  $(PYTHON) -m ruff format --check .
22
22
 
23
23
  typecheck:
24
- $(PYTHON) -m mypy src
24
+ $(PYTHON) -m mypy rabbitmq_amqp_python_client
25
25
  MYPYPATH=. $(PYTHON) -m mypy docs/examples
26
26
 
27
27
  build:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: rabbitmq-amqp-python-client
3
- Version: 2.0.0a1
3
+ Version: 2.0.0a2
4
4
  Summary: A from-scratch AMQP 1.0 client for RabbitMQ, built directly against the wire protocol.
5
5
  Author: RabbitMQ Team
6
6
  License: Apache-2.0
@@ -42,7 +42,7 @@ pip install -e ".[dev]"
42
42
  ## Quick start
43
43
 
44
44
  ```python
45
- from src import Connection, ConnectionParameters, Context, Message
45
+ from rabbitmq_amqp_python_client import Connection, ConnectionParameters, Context, Message
46
46
 
47
47
  connection = Connection(ConnectionParameters()) # localhost:5672, guest/guest
48
48
  try:
@@ -84,7 +84,7 @@ PYTHONPATH=. .venv/bin/python docs/examples/basic_connection.py
84
84
  make install # create .venv and install the package with its dev extras
85
85
  make format # ruff format, then ruff check --fix
86
86
  make lint # ruff check and ruff format --check
87
- make typecheck # mypy src, in strict mode
87
+ make typecheck # mypy rabbitmq_amqp_python_client, in strict mode
88
88
  make test-unit # the unit suite; no broker needed
89
89
  make test-integration # the integration suite; needs a broker on localhost:5672
90
90
  make test # both suites
@@ -98,7 +98,7 @@ MYPYPATH=. .venv/bin/python -m mypy docs/examples/*.py
98
98
 
99
99
  ## Project layout
100
100
 
101
- `src/` holds the client: `wire/` is the protocol
101
+ `rabbitmq_amqp_python_client/` holds the client: `wire/` is the protocol
102
102
  layer (type codec, frames, performatives, messages, SASL) and knows nothing
103
103
  above itself, and `connection.py`, `session.py`, `link.py`, `management.py`,
104
104
  `publisher.py`, `consumer.py` and `reconnection.py` build the public API on top
@@ -26,7 +26,7 @@ pip install -e ".[dev]"
26
26
  ## Quick start
27
27
 
28
28
  ```python
29
- from src import Connection, ConnectionParameters, Context, Message
29
+ from rabbitmq_amqp_python_client import Connection, ConnectionParameters, Context, Message
30
30
 
31
31
  connection = Connection(ConnectionParameters()) # localhost:5672, guest/guest
32
32
  try:
@@ -68,7 +68,7 @@ PYTHONPATH=. .venv/bin/python docs/examples/basic_connection.py
68
68
  make install # create .venv and install the package with its dev extras
69
69
  make format # ruff format, then ruff check --fix
70
70
  make lint # ruff check and ruff format --check
71
- make typecheck # mypy src, in strict mode
71
+ make typecheck # mypy rabbitmq_amqp_python_client, in strict mode
72
72
  make test-unit # the unit suite; no broker needed
73
73
  make test-integration # the integration suite; needs a broker on localhost:5672
74
74
  make test # both suites
@@ -82,7 +82,7 @@ MYPYPATH=. .venv/bin/python -m mypy docs/examples/*.py
82
82
 
83
83
  ## Project layout
84
84
 
85
- `src/` holds the client: `wire/` is the protocol
85
+ `rabbitmq_amqp_python_client/` holds the client: `wire/` is the protocol
86
86
  layer (type codec, frames, performatives, messages, SASL) and knows nothing
87
87
  above itself, and `connection.py`, `session.py`, `link.py`, `management.py`,
88
88
  `publisher.py`, `consumer.py` and `reconnection.py` build the public API on top
@@ -27,7 +27,7 @@ import socket
27
27
  import time
28
28
  import uuid
29
29
 
30
- from src import (
30
+ from rabbitmq_amqp_python_client import (
31
31
  AMQPError,
32
32
  Connection,
33
33
  ConnectionParameters,
@@ -4,12 +4,12 @@ Run against a local broker::
4
4
 
5
5
  PYTHONPATH=. .venv/bin/python docs/examples/basic_connection.py
6
6
 
7
- Constructing a :class:`~src.Connection` dials the TCP
7
+ Constructing a :class:`~rabbitmq_amqp_python_client.Connection` dials the TCP
8
8
  socket, exchanges the protocol header, runs SASL and the ``open`` handshake, and
9
9
  starts the frame reader — all before ``__init__`` returns. There is no separate
10
10
  ``connect()`` step: a constructed connection is already ``OPEN`` and usable.
11
11
 
12
- The default :class:`~src.ConnectionParameters` describe
12
+ The default :class:`~rabbitmq_amqp_python_client.ConnectionParameters` describe
13
13
  exactly what a stock broker offers — ``localhost:5672``, ``guest``/``guest``, the
14
14
  ``/`` virtual host — so the no-argument form below is the shortest connection
15
15
  this client can make. What the broker sent back in its own ``open`` is readable
@@ -24,7 +24,7 @@ from __future__ import annotations
24
24
 
25
25
  import logging
26
26
 
27
- from src import Connection, ConnectionParameters
27
+ from rabbitmq_amqp_python_client import Connection, ConnectionParameters
28
28
 
29
29
  logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)-7s %(name)s: %(message)s")
30
30
  logger = logging.getLogger("example")
@@ -11,11 +11,11 @@ both confirmed and consumed, so this doubles as a scriptable smoke test::
11
11
  python3 docs/examples/console_application.py --help
12
12
 
13
13
  This program adds nothing to the client's public surface: it is built entirely
14
- out of :class:`~src.Connection`,
15
- :class:`~src.Management`,
16
- :class:`~src.Publisher`,
17
- :class:`~src.Consumer` and
18
- :class:`~src.RecoveryConfiguration`. It owns exactly one
14
+ out of :class:`~rabbitmq_amqp_python_client.Connection`,
15
+ :class:`~rabbitmq_amqp_python_client.Management`,
16
+ :class:`~rabbitmq_amqp_python_client.Publisher`,
17
+ :class:`~rabbitmq_amqp_python_client.Consumer` and
18
+ :class:`~rabbitmq_amqp_python_client.RecoveryConfiguration`. It owns exactly one
19
19
  connection: it is a correctness/smoke-test tool, not a load generator.
20
20
 
21
21
  Exit codes:
@@ -49,7 +49,7 @@ _SOURCE_ROOT = Path(__file__).resolve().parents[2]
49
49
  if _SOURCE_ROOT.is_dir() and str(_SOURCE_ROOT) not in sys.path:
50
50
  sys.path.insert(0, str(_SOURCE_ROOT))
51
51
 
52
- from src import ( # noqa: E402 - after the sys.path bootstrap above
52
+ from rabbitmq_amqp_python_client import ( # noqa: E402 - after the sys.path bootstrap above
53
53
  AMQPError,
54
54
  Connection,
55
55
  ConnectionParameters,
@@ -64,7 +64,7 @@ from src import ( # noqa: E402 - after the sys.path bootstrap above
64
64
  )
65
65
 
66
66
  if TYPE_CHECKING:
67
- from src.connection import ConnectionState
67
+ from rabbitmq_amqp_python_client.connection import ConnectionState
68
68
 
69
69
  # --- exit codes (§7) ----------------------------------------------------
70
70
 
@@ -475,7 +475,7 @@ def map_queue_type(options: Options, specification: QueueSpecification) -> Queue
475
475
  specification: The builder from ``management.queue(name)``.
476
476
 
477
477
  Returns:
478
- The same builder, ready to :meth:`~src.QueueSpecification.declare`.
478
+ The same builder, ready to :meth:`~rabbitmq_amqp_python_client.QueueSpecification.declare`.
479
479
 
480
480
  Raises:
481
481
  OptionsError: If ``queue_type`` is not one of :data:`QUEUE_TYPES`.
@@ -8,7 +8,7 @@ A consumer is a receiver link plus a ``message_handler``. The link is granted
8
8
  ``initial_credits`` when it attaches, and the client re-grants one credit every
9
9
  time a delivery is settled, so at most that many messages are ever outstanding.
10
10
  The handler runs on the client's delivery thread and is handed a
11
- :class:`~src.Context` alongside the message; calling
11
+ :class:`~rabbitmq_amqp_python_client.Context` alongside the message; calling
12
12
  ``context.accept()`` settles the delivery as ``accepted``, which is what tells
13
13
  the broker it may drop it. ``discard()`` and ``requeue()`` are the other two
14
14
  choices, and doing nothing leaves the delivery unsettled — visible as
@@ -28,7 +28,7 @@ import logging
28
28
  import queue
29
29
  import uuid
30
30
 
31
- from src import (
31
+ from rabbitmq_amqp_python_client import (
32
32
  Connection,
33
33
  ConnectionParameters,
34
34
  Context,
@@ -12,7 +12,7 @@ dynamically generates a private, per-attach pseudo-queue address
12
12
  reply puts that address in an outgoing request's ``properties.reply_to``;
13
13
  whoever answers just needs to publish to it — no dedicated, exclusive reply
14
14
  queue to declare and clean up per requester. Like a presettled consumer, its
15
- ``Context`` methods all raise :class:`~src.ConsumerError`: the broker considers
15
+ ``Context`` methods all raise :class:`~rabbitmq_amqp_python_client.ConsumerError`: the broker considers
16
16
  every delivery on this link already settled the instant it sends it.
17
17
 
18
18
  This script plays both roles, on two separate connections:
@@ -22,7 +22,7 @@ This script plays both roles, on two separate connections:
22
22
  * the **responder** (``responder_connection``) declares an ordinary request
23
23
  queue, consumes it with a normal ``ExplicitSettle`` consumer, and replies to
24
24
  whatever address arrived in the request's ``reply_to`` — an ordinary
25
- anonymous :class:`~src.Publisher` (step_020_publishers.md §3.3) also sends
25
+ anonymous :class:`~rabbitmq_amqp_python_client.Publisher` (step_020_publishers.md §3.3) also sends
26
26
  the request itself, targeting the request queue.
27
27
 
28
28
  Because the pseudo-queue is scoped to the exact connection and session that
@@ -43,7 +43,7 @@ import socket
43
43
  import time
44
44
  import uuid
45
45
 
46
- from src import (
46
+ from rabbitmq_amqp_python_client import (
47
47
  Connection,
48
48
  ConnectionParameters,
49
49
  ConnectionState,
@@ -55,7 +55,7 @@ from src import (
55
55
  RecoveryConfiguration,
56
56
  queue_address,
57
57
  )
58
- from src.wire import Properties
58
+ from rabbitmq_amqp_python_client.wire import Properties
59
59
 
60
60
  #: How long the example waits for a reply it expects.
61
61
  TIMEOUT_SECONDS = 15.0
@@ -14,7 +14,7 @@ request message out and one response message back, correlated by
14
14
  The script walks the whole surface once:
15
15
 
16
16
  1. ``queue(name).declare()`` declares a classic queue and returns a
17
- :class:`~src.QueueInfo` parsed from the broker's
17
+ :class:`~rabbitmq_amqp_python_client.QueueInfo` parsed from the broker's
18
18
  answer, so the queue's real settings are readable straight away;
19
19
  2. ``exchange(name).type(ExchangeType.TOPIC).declare()`` declares a topic
20
20
  exchange;
@@ -26,7 +26,7 @@ The script walks the whole surface once:
26
26
 
27
27
  Declaring is idempotent as long as the arguments match: re-declaring the same
28
28
  queue is a successful no-op, while re-declaring it with different arguments is a
29
- :class:`~src.ManagementError`.
29
+ :class:`~rabbitmq_amqp_python_client.ManagementError`.
30
30
  """
31
31
 
32
32
  from __future__ import annotations
@@ -34,7 +34,7 @@ from __future__ import annotations
34
34
  import logging
35
35
  import uuid
36
36
 
37
- from src import (
37
+ from rabbitmq_amqp_python_client import (
38
38
  Connection,
39
39
  ConnectionParameters,
40
40
  ExchangeType,
@@ -13,10 +13,10 @@ summary::
13
13
  python3 docs/examples/performance_test.py --help
14
14
 
15
15
  This program adds nothing to the client's public surface: it is built entirely
16
- out of :class:`~src.Connection`,
17
- :class:`~src.Management`,
18
- :class:`~src.Publisher` and
19
- :class:`~src.Consumer`. It owns exactly one connection,
16
+ out of :class:`~rabbitmq_amqp_python_client.Connection`,
17
+ :class:`~rabbitmq_amqp_python_client.Management`,
18
+ :class:`~rabbitmq_amqp_python_client.Publisher` and
19
+ :class:`~rabbitmq_amqp_python_client.Consumer`. It owns exactly one connection,
20
20
  one publisher and one consumer: it measures what one such pair can sustain, not
21
21
  a cluster-wide ceiling (§10).
22
22
 
@@ -57,7 +57,7 @@ _SOURCE_ROOT = Path(__file__).resolve().parents[2]
57
57
  if _SOURCE_ROOT.is_dir() and str(_SOURCE_ROOT) not in sys.path:
58
58
  sys.path.insert(0, str(_SOURCE_ROOT))
59
59
 
60
- from src import ( # noqa: E402 - after the sys.path bootstrap above
60
+ from rabbitmq_amqp_python_client import ( # noqa: E402 - after the sys.path bootstrap above
61
61
  AMQPError,
62
62
  ApplicationProperties,
63
63
  Connection,
@@ -931,7 +931,7 @@ def map_queue_type(options: Options, specification: QueueSpecification) -> Queue
931
931
  specification: The builder from ``management.queue(name)``.
932
932
 
933
933
  Returns:
934
- The same builder, ready to :meth:`~src.QueueSpecification.declare`.
934
+ The same builder, ready to :meth:`~rabbitmq_amqp_python_client.QueueSpecification.declare`.
935
935
 
936
936
  Raises:
937
937
  OptionsError: If ``queue_type`` is not one of :data:`QUEUE_TYPES`.
@@ -13,9 +13,9 @@ consumer dies holding one.
13
13
 
14
14
  Two consequences show up directly in the API and are asserted below:
15
15
 
16
- * the handler must not touch its :class:`~src.Context`.
16
+ * the handler must not touch its :class:`~rabbitmq_amqp_python_client.Context`.
17
17
  There is nothing left to settle, so ``accept()``/``discard()``/``requeue()``
18
- each raise :class:`~src.ConsumerError`. A presettled
18
+ each raise :class:`~rabbitmq_amqp_python_client.ConsumerError`. A presettled
19
19
  handler only reads the message. ``context.is_presettled`` says which mode it
20
20
  is running in, for a handler shared between both;
21
21
  * ``consumer.unsettled_message_count`` stays at ``0`` for the consumer's whole
@@ -38,7 +38,7 @@ import socket
38
38
  import time
39
39
  import uuid
40
40
 
41
- from src import (
41
+ from rabbitmq_amqp_python_client import (
42
42
  Connection,
43
43
  ConnectionParameters,
44
44
  ConnectionState,
@@ -18,7 +18,7 @@ how that address is chosen. All three forms appear here:
18
18
  two different addresses, one link.
19
19
 
20
20
  Every ``publish`` blocks until the broker settles the message and returns a
21
- :class:`~src.PublishResult` pairing the message with its
21
+ :class:`~rabbitmq_amqp_python_client.PublishResult` pairing the message with its
22
22
  outcome. ``RELEASED`` is worth noticing: it is not an error and not a rejection,
23
23
  it is the broker saying the message routed nowhere — which is exactly what
24
24
  happens when an exchange has no binding matching the routing key.
@@ -32,7 +32,7 @@ from __future__ import annotations
32
32
  import logging
33
33
  import uuid
34
34
 
35
- from src import (
35
+ from rabbitmq_amqp_python_client import (
36
36
  Connection,
37
37
  ConnectionParameters,
38
38
  ExchangeType,
@@ -26,7 +26,7 @@ import logging
26
26
  import queue
27
27
  import uuid
28
28
 
29
- from src import (
29
+ from rabbitmq_amqp_python_client import (
30
30
  Connection,
31
31
  ConnectionParameters,
32
32
  Consumer,
@@ -19,7 +19,7 @@ A rejection is **not** an error here: ``publish`` returns normally with
19
19
  publish attempt itself succeeded — it is the routing that did not. Anything the
20
20
  broker said about why is parsed out of the ``rejected`` disposition's
21
21
  ``error.info`` map into
22
- :class:`~src.RejectionDetails`:
22
+ :class:`~rabbitmq_amqp_python_client.RejectionDetails`:
23
23
 
24
24
  * ``reason`` — the broker's explanation, e.g. ``maximum queue length exceeded``;
25
25
  * ``rejected_by_queue`` — which queue rejected it, which matters when the
@@ -36,7 +36,7 @@ from __future__ import annotations
36
36
  import logging
37
37
  import uuid
38
38
 
39
- from src import (
39
+ from rabbitmq_amqp_python_client import (
40
40
  Connection,
41
41
  ConnectionParameters,
42
42
  Message,
@@ -32,7 +32,7 @@ import logging
32
32
  import queue
33
33
  import uuid
34
34
 
35
- from src import (
35
+ from rabbitmq_amqp_python_client import (
36
36
  ApplicationProperties,
37
37
  Connection,
38
38
  ConnectionParameters,
@@ -44,7 +44,7 @@ from src import (
44
44
  StreamOffsetSpecification,
45
45
  Symbol,
46
46
  )
47
- from src.constants import STREAM_FILTER_VALUE_ANNOTATION
47
+ from rabbitmq_amqp_python_client.constants import STREAM_FILTER_VALUE_ANNOTATION
48
48
 
49
49
  #: How long the example waits for the deliveries a filter should let through.
50
50
  TIMEOUT_SECONDS = 15.0
@@ -24,7 +24,7 @@ import logging
24
24
  import pathlib
25
25
  import ssl
26
26
 
27
- from src import Connection, ConnectionParameters
27
+ from rabbitmq_amqp_python_client import Connection, ConnectionParameters
28
28
 
29
29
  logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)-7s %(name)s: %(message)s")
30
30
  logger = logging.getLogger("example")
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "rabbitmq-amqp-python-client"
7
- version = "2.0.0-alpha.1"
7
+ version = "2.0.0-alpha.2"
8
8
  description = "A from-scratch AMQP 1.0 client for RabbitMQ, built directly against the wire protocol."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -4,7 +4,7 @@ Everything an application needs is exported here: the connection and its
4
4
  parameters, the management API and its specifications, the publisher and
5
5
  consumer builders, the reconnection policy, and the message types needed to
6
6
  compose a message and read an outcome. The lower layers remain importable from
7
- their own modules — :mod:`~src.wire` in particular holds
7
+ their own modules — :mod:`~rabbitmq_amqp_python_client.wire` in particular holds
8
8
  the rest of the protocol types. See ``docs/examples`` for usage.
9
9
  """
10
10
 
@@ -1,8 +1,8 @@
1
1
  """Logging helpers.
2
2
 
3
3
  The client logs through the standard :mod:`logging` package under the
4
- ``src`` logger namespace. Applications configure
5
- levels/handlers the normal way (``logging.getLogger("src")``);
4
+ ``rabbitmq_amqp_python_client`` logger namespace. Applications configure
5
+ levels/handlers the normal way (``logging.getLogger("rabbitmq_amqp_python_client")``);
6
6
  this module only centralizes the child-logger naming convention.
7
7
  """
8
8
 
@@ -10,7 +10,7 @@ from __future__ import annotations
10
10
 
11
11
  import logging
12
12
 
13
- ROOT_LOGGER_NAME = "src"
13
+ ROOT_LOGGER_NAME = "rabbitmq_amqp_python_client"
14
14
 
15
15
 
16
16
  def get_logger(component: str) -> logging.Logger:
@@ -21,6 +21,6 @@ def get_logger(component: str) -> logging.Logger:
21
21
  or ``"consumer"``.
22
22
 
23
23
  Returns:
24
- A logger named ``src.<component>``.
24
+ A logger named ``rabbitmq_amqp_python_client.<component>``.
25
25
  """
26
26
  return logging.getLogger(f"{ROOT_LOGGER_NAME}.{component}")
@@ -28,9 +28,9 @@ import uuid
28
28
  import pika
29
29
  import pytest
30
30
 
31
- from src import Connection, ConnectionParameters, OutcomeState
32
- from src.management import QueueInfo
33
- from src.wire import ApplicationProperties, Message, Properties
31
+ from rabbitmq_amqp_python_client import Connection, ConnectionParameters, OutcomeState
32
+ from rabbitmq_amqp_python_client.management import QueueInfo
33
+ from rabbitmq_amqp_python_client.wire import ApplicationProperties, Message, Properties
34
34
 
35
35
  pytestmark = pytest.mark.integration
36
36
 
@@ -45,10 +45,10 @@ from rstream import Consumer as RstreamConsumer
45
45
  from rstream import Producer as RstreamProducer
46
46
  from rstream import Properties as RstreamProperties
47
47
 
48
- from src import Connection, ConnectionParameters, OutcomeState
49
- from src.consumer import StreamOffsetSpecification
50
- from src.management import QueueInfo
51
- from src.wire import ApplicationProperties, Message, Properties
48
+ from rabbitmq_amqp_python_client import Connection, ConnectionParameters, OutcomeState
49
+ from rabbitmq_amqp_python_client.consumer import StreamOffsetSpecification
50
+ from rabbitmq_amqp_python_client.management import QueueInfo
51
+ from rabbitmq_amqp_python_client.wire import ApplicationProperties, Message, Properties
52
52
 
53
53
  pytestmark = pytest.mark.integration
54
54
 
@@ -8,7 +8,7 @@ import time
8
8
 
9
9
  import pytest
10
10
 
11
- from src import (
11
+ from rabbitmq_amqp_python_client import (
12
12
  AuthenticationError,
13
13
  Connection,
14
14
  ConnectionParameters,
@@ -22,7 +22,7 @@ import uuid
22
22
 
23
23
  import pytest
24
24
 
25
- from src import (
25
+ from rabbitmq_amqp_python_client import (
26
26
  Connection,
27
27
  ConnectionParameters,
28
28
  ConsumerError,
@@ -30,8 +30,8 @@ from src import (
30
30
  OutcomeState,
31
31
  StreamOffsetSpecification,
32
32
  )
33
- from src.constants import STREAM_FILTER_VALUE_ANNOTATION
34
- from src.wire import (
33
+ from rabbitmq_amqp_python_client.constants import STREAM_FILTER_VALUE_ANNOTATION
34
+ from rabbitmq_amqp_python_client.wire import (
35
35
  ApplicationProperties,
36
36
  Message,
37
37
  MessageAnnotations,
@@ -13,7 +13,7 @@ import uuid
13
13
 
14
14
  import pytest
15
15
 
16
- from src import (
16
+ from rabbitmq_amqp_python_client import (
17
17
  ClassicQueueMode,
18
18
  ClassicQueueVersion,
19
19
  Connection,
@@ -28,15 +28,15 @@ from src import (
28
28
  ReceiverLink,
29
29
  SenderLink,
30
30
  )
31
- from src.constants import EXCHANGE_ADDRESS_WITH_KEY_TEMPLATE
32
- from src.management import (
31
+ from rabbitmq_amqp_python_client.constants import EXCHANGE_ADDRESS_WITH_KEY_TEMPLATE
32
+ from rabbitmq_amqp_python_client.management import (
33
33
  STATUS_BAD_REQUEST,
34
34
  STATUS_CONFLICT,
35
35
  STATUS_NOT_FOUND,
36
36
  encode_path_segment,
37
37
  queue_path,
38
38
  )
39
- from src.wire import Accepted, Message, Source, Target
39
+ from rabbitmq_amqp_python_client.wire import Accepted, Message, Source, Target
40
40
 
41
41
  pytestmark = pytest.mark.integration
42
42
 
@@ -21,8 +21,8 @@ from pathlib import Path
21
21
  import performance_test as app
22
22
  import pytest
23
23
 
24
- from src import Connection, ConnectionParameters
25
- from src.wire import Message
24
+ from rabbitmq_amqp_python_client import Connection, ConnectionParameters
25
+ from rabbitmq_amqp_python_client.wire import Message
26
26
 
27
27
  pytestmark = pytest.mark.integration
28
28
 
@@ -5,7 +5,7 @@ message, ``released`` for an exchange with no bindings, and ``rejected`` with
5
5
  structured details for a quorum queue whose ``x-overflow`` is
6
6
  ``reject-publish`` (step_070 §6). Consumers are a later step, so the one test
7
7
  that has to prove a message really landed attaches a raw
8
- :class:`~src.ReceiverLink` itself.
8
+ :class:`~rabbitmq_amqp_python_client.ReceiverLink` itself.
9
9
  """
10
10
 
11
11
  from __future__ import annotations
@@ -16,7 +16,7 @@ import uuid
16
16
 
17
17
  import pytest
18
18
 
19
- from src import (
19
+ from rabbitmq_amqp_python_client import (
20
20
  Connection,
21
21
  ConnectionParameters,
22
22
  ExchangeType,
@@ -27,7 +27,7 @@ from src import (
27
27
  exchange_address,
28
28
  queue_address,
29
29
  )
30
- from src.wire import Accepted, Message, Properties, Source
30
+ from rabbitmq_amqp_python_client.wire import Accepted, Message, Properties, Source
31
31
 
32
32
  pytestmark = pytest.mark.integration
33
33
 
@@ -27,7 +27,7 @@ import uuid
27
27
 
28
28
  import pytest
29
29
 
30
- from src import (
30
+ from rabbitmq_amqp_python_client import (
31
31
  AMQPError,
32
32
  Connection,
33
33
  ConnectionParameters,
@@ -36,7 +36,7 @@ from src import (
36
36
  ManagementError,
37
37
  RecoveryConfiguration,
38
38
  )
39
- from src.wire import Message
39
+ from rabbitmq_amqp_python_client.wire import Message
40
40
 
41
41
  pytestmark = pytest.mark.integration
42
42
 
@@ -6,7 +6,7 @@ import uuid
6
6
 
7
7
  import pytest
8
8
 
9
- from src import (
9
+ from rabbitmq_amqp_python_client import (
10
10
  Connection,
11
11
  ConnectionParameters,
12
12
  ConsumerError,
@@ -15,7 +15,7 @@ from src import (
15
15
  ReceiverLink,
16
16
  SenderLink,
17
17
  )
18
- from src.wire import (
18
+ from rabbitmq_amqp_python_client.wire import (
19
19
  Accepted,
20
20
  ApplicationProperties,
21
21
  Message,
@@ -242,7 +242,7 @@ class TestSettlement:
242
242
  second.detach()
243
243
 
244
244
  def test_a_rejected_message_is_not_redelivered(self, session, queue_address):
245
- from src.wire import Error
245
+ from rabbitmq_amqp_python_client.wire import Error
246
246
 
247
247
  sender = _sender(session, queue_address)
248
248
  sender.send_transfer(b"tag-1", Message("reject me"), settled=True)
@@ -10,7 +10,7 @@ import ssl
10
10
 
11
11
  import pytest
12
12
 
13
- from src import AuthenticationError, Connection, ConnectionParameters, ConnectionState
13
+ from rabbitmq_amqp_python_client import AuthenticationError, Connection, ConnectionParameters, ConnectionState
14
14
 
15
15
  from .conftest import BROKER_HOST, BROKER_TLS_PORT, CA_CERTIFICATE, CLIENT_CERTIFICATE, CLIENT_KEY
16
16
 
@@ -7,9 +7,9 @@ import socket
7
7
 
8
8
  import pytest
9
9
 
10
- from src import connection as connection_module
11
- from src.connection import Connection, ConnectionParameters
12
- from src.reconnection import RecoveryConfiguration
10
+ from rabbitmq_amqp_python_client import connection as connection_module
11
+ from rabbitmq_amqp_python_client.connection import Connection, ConnectionParameters
12
+ from rabbitmq_amqp_python_client.reconnection import RecoveryConfiguration
13
13
  from tests.unit.fake_broker import BrokerFarm, FakeBroker
14
14
 
15
15