1Changes 2======= 3 4py-amqp is fork of amqplib used by Kombu containing additional features and improvements. 5The previous amqplib changelog is here: 6http://code.google.com/p/py-amqplib/source/browse/CHANGES 7 8.. _version-2.6.0: 9 102.6.1 11===== 12:release-date: 2020-07-31 10.30 P.M UTC+6:00 13:release-by: Asif Saif Uddin 14 15- Fix buffer overflow in frame_writer after frame_max is increased. `frame_writer` 16allocates a `bytearray` on intialization with a length based on the `connection.frame_max` 17value. If `connection.frame_max` is changed to a larger value, this causes an 18error like `pack_into requires a buffer of at least 408736 bytes`. 19 20 21.. _version-2.6.0: 22 232.6.0 24===== 25:release-date: 20-06-01 12.00 P.M UTC+6:00 26:release-by: Asif Saif Uddin 27 28- Implement speedups in cython (#311) 29- Updated some tests & code improvements 30- Separate logger for Connection.heartbeat_tick method 31- Cython generic content (#315) 32- Improve documentation a_global parameter of basic_qos() method. 33- Fix saving partial read buffer on windows during socket timeout. (#321) 34- Fix deserialization of long string field values that are not utf-8. 35- Added simple cythonization of abstract_channel.py 36- Speedups of serialization.py are more restrictive 37 38.. _version-2.5.2: 39 402.5.2 41===== 42:release-date: 2019-09-30 19.00 P.M UTC+6:00 43:release-by: Asif Saif Uddin 44 45- Fixed a channel issue against a connection already closed 46- Updated some tests & code improvements 47 48 49.. _version-2.5.1: 50 512.5.1 52===== 53:release-date: 2019-08-14 22.00 P.M UTC+6:00 54:release-by: Asif Saif Uddin 55 56- Ignore all methods except Close and Close-OK when channel/connection is closing 57- Fix faulty ssl sni intiation parameters (#283) 58- Undeprecate auto_delete flag for exchanges. (#287) 59- Improved tests and testing environments 60 61 62.. _version-2.5.0: 63 642.5.0 65===== 66:release-date: 2019-05-30 17.30 P.M UTC+6:00 67:release-by: Asif Saif Uddin 68 69- Drop Python 3.4 70- Add new platform 71- Numerious bug fixes 72 73.. _version-2.4.2: 74 752.4.2 76===== 77:release-date: 2019-03-03 10:45 P.M UTC+2:00 78:release-by: Omer Katz 79 80- Added support for the Cygwin platform 81 82 Contributed by **Matus Valo** 83 84- Correct offset incrementation when parsing bitmaps. 85 86 Contributed by **Allan Simon** & **Omer Katz** 87 88- Consequent bitmaps are now parsed correctly. 89 90 Previously the bit counter was reset with every bit. 91 We now reset it once per 8 bits, when we consume the next byte. 92 93 Contributed by **Omer Katz** 94 95Code Cleanups & Improvements: 96 97 - **Patrick Cloke** 98 - **Matus Valo** 99 - **Jeremiah Cooper** 100 - **Omer Katz** 101 102Test Coverage & CI Improvements: 103 104 - **Matus Valo** 105 - **Omer Katz** 106 - **Jeremiah Cooper** 107 - **Omer Katz** 108 109.. _version-2.4.1: 110 1112.4.1 112===== 113:release-date: 2018-04-02 9:00 A.M UTC+2 114:release-by: Omer Katz 115 116- To avoid breaking the API basic_consume() now returns the consumer tag 117 instead of a tuple when nowait is True. 118 119 Fix contributed by **Matus Valo** 120 121- Fix crash in basic_publish when broker does not support connection.blocked 122 capability. 123 124 Fix contributed by **Matus Valo** 125 126- read_frame() is now Python 3 compatible for large payloads. 127 128 Fix contributed by **Antonio Ojea** 129 130- Support float read_timeout/write_timeout. 131 132 Fix contributed by **:github_user:`cadl`** 133 134- Always treat SSLError timeouts as socket timeouts. 135 136 Fix contributed by **Dirk Mueller** and **Antonio Ojea** 137 138- Treat EWOULDBLOCK as timeout. 139 140 This fixes a regression on Windows from 2.4.0. 141 142 Fix contributed by **Lucian Petrut** 143 144Test Coverage & CI Improvements: 145 146- **Matus Valo** 147- **Antonio Ojea** 148 149.. _version-2.4.0: 150 1512.4.0 152===== 153:release-date: 2018-13-01 1:00 P.M UTC+2 154:release-by: Omer Katz 155 156- Fix inconsistent frame_handler return value. 157 158 The function returned by frame_handler is meant to return True 159 once the complete message is received and the callback is called, 160 False otherwise. 161 162 This fixes the return value for messages with a body split across 163 multiple frames, and heartbeat frames. 164 165 Fix contributed by **:github_user:`evanunderscore`** 166 167- Don't default content_encoding to utf-8 for bytes. 168 169 This is not an acceptable default as the content may not be 170 valid utf-8, and even if it is, the producer likely does not 171 expect the message to be decoded by the consumer. 172 173 Fix contributed by **:github_user:`evanunderscore`** 174 175- Fix encoding of messages with multibyte characters. 176 177 Body length was previously calculated using string length, 178 which may be less than the length of the encoded body when 179 it contains multibyte sequences. This caused the body of 180 the frame to be truncated. 181 182 Fix contributed by **:github_user:`evanunderscore`** 183 184- Respect content_encoding when encoding messages. 185 186 Previously the content_encoding was ignored and messages 187 were always encoded as utf-8. This caused messages to be 188 incorrectly decoded if content_encoding is properly respected 189 when decoding. 190 191 Fix contributed by **:github_user:`evanunderscore`** 192 193- Fix AMQP protocol header for AMQP 0-9-1. 194 195 Previously it was set to a different value for unknown reasons. 196 197 Fix contributed by **Carl Hörberg** 198 199- Add support for Python 3.7. 200 201 Change direct SSLSocket instantiation with wrap_socket. 202 Added Python 3.7 to CI. 203 204 Fix contributed by **Omer Katz** and **:github_user:`avborhanian`** 205 206- Add support for field type "x" (byte array). 207 208 Fix contributed by **Davis Kirkendall** 209 210- If there is an exception raised on Connection.connect or Connection.close, 211 ensure that the underlying transport socket is closed. 212 213 Adjust exception message on connection errors as well. 214 215 Fix contributed by **:github_user:`tomc797`** 216 217- TCP_USER_TIMEOUT has to be excluded from KNOWN_TCP_OPTS in BSD platforms. 218 219 Fix contributed by **George Tantiras** 220 221- Handle negative acknowledgments. 222 223 Fix contributed by **Matus Valo** 224 225- Added integration tests. 226 227 Fix contributed by **Matus Valo** 228 229- Fix basic_consume() with no consumer_tag provided. 230 231 Fix contributed by **Matus Valo** 232 233- Improved empty AMQPError string representation. 234 235 Fix contributed by **Matus Valo** 236 237- Drain events before publish. 238 239 This is needed to capture out of memory messages for clients that only 240 publish. Otherwise on_blocked is never called. 241 242 Fix contributed by **Jelte Fennema** and **Matus Valo** 243 244- Don't revive channel when connection is closing. 245 246 When connection is closing don't raise error when Channel.Close method is received. 247 248 Fix contributed by **Matus Valo** 249 250.. _version-2.3.2: 251 2522.3.2 253===== 254:release-date: 2018-05-29 15:30 P.M UTC+3 255:release-by: Omer Katz 256 257- Fix a regression that occurs when running amqp on OSX. 258 259 TCP_USER_TIMEOUT is not available when running on OSX. 260 We now remove it from the set of known TCP options. 261 262 Fix contributed by **Ofer Horowitz** 263 264.. _version-2.3.1: 265 2662.3.1 267===== 268:release-date: 2018-05-28 16:30 P.M UTC+3 269:release-by: Omer Katz 270 271- Fix a regression that occurs when running amqp under Python 2.7. 272 273 #182 mistakenly replaced a type check with unicode to string_t which is str 274 in Python 2.7. text_t should have been used instead. 275 This is now fixed and the tests have been adjusted to ensure this never regresses 276 again. 277 278 Fix contributed by **Omer Katz** 279 280.. _version-2.3.0: 281 2822.3.0 283===== 284:release-date: 2018-05-27 16:30 P.M UTC+3 285:release-by: Omer Katz 286 287- Cleanup TCP configurations across platforms and unified defaults. 288 289 Fix contributed by **Dan Chowdhury** 290 291- Fix for TypeError when setting socket options. 292 293 Fix contributed by **Matthias Erll** 294 295- Ensure that all call sites for decoding bytes to str allow surrogates, 296 as the encoding mechanism now supports. 297 298 Fix contributed by **Stephen Hatch** 299 300- Don't send AAAA DNS request when domain resolved to IPv4 address. 301 302 Fix contributed by **Ihar Hrachyshka & Omer Katz** 303 304- Support for EXTERNAL authentication and specific login_method. 305 306 Fix contributed by **Matthias Erll** 307 308- If the old python-gssapi library is installed the gssapi module will be available. 309 We now ensure that we only use the new gssapi library. 310 311 Fix contributed by **Jacopo Notarstefano** 312 313Code Cleanups & Test Coverage: 314 315- :github_user:`eric-eric-eric` 316- **Omer Katz** 317- **Jon Dufresne** 318- **Matthias Urlichs** 319 320.. _version-2.2.2: 321 3222.2.2 323===== 324:release-date: 2017-09-14 09:00 A.M UTC+2 325:release-by: Omer Katz 326 327- Sending empty messages no longer hangs. Instead an empty message is sent correctly.(addresses #151) 328 329 Fix contributed by **Christian Blades** 330 331- Fixed compatibility issues in UTF-8 encoding behavior between Py2/Py3 (#164) 332 333 Fix contributed by **Tyler James Harden** 334 335.. _version-2.2.1: 336 3372.2.1 338===== 339:release-date: 2017-07-14 09:00 A.M UTC+2 340:release-by: Omer Katz 341 342- Fix implicit conversion from bytes to string on the connection object. (Issue #155) 343 344 This issue has caused Celery to crash on connection to RabbitMQ. 345 346 Fix contributed by **Omer Katz** 347 348.. _version-2.2.0: 349 3502.2.0 351===== 352:release-date: 2017-07-12 10:00 A.M UTC+2 353:release-by: Ask Solem 354 355- Fix random delays in task execution. 356 357 This is a bug that caused performance issues due to polling timeouts that occur when receiving incomplete AMQP frames. (Issues #3978 #3737 #3814) 358 359 Fix contributed by **Robert Kopaczewski** 360 361- Calling ``conn.collect()`` multiple times will no longer raise an ``AttributeError`` when no channels exist. 362 363 Fix contributed by **Gord Chung** 364 365- Fix compatibility code for Python 2.7.6. 366 367 Fix contributed by **Jonathan Schuff** 368 369- When running in Windows, py-amqp will no longer use the unsupported TCP option TCP_MAXSEG. 370 371 Fix contributed by **Tony Breeds** 372 373- Added support for setting the SNI hostname header. 374 375 The SSL protocol version is now set to SSLv23 376 377 Contributed by **Dhananjay Sathe** 378 379- Authentication mechanisms were refactored to be more modular. GSSAPI authentication is now supported. 380 381 Contributed by **Alexander Dutton** 382 383- Do not reconnect on collect. 384 385 Fix contributed by **Gord Chung** 386 387.. _version-2.1.4: 388 3892.1.4 390===== 391:release-date: 2016-12-14 03:40 P.M PST 392:release-by: Ask Solem 393 394- Removes byte string comparison warnings when running under ``python -b``. 395 396 Fix contributed by **Jon Dufresne**. 397 398- Linux version parsing broke when the version included a '+' character 399 (Issue #119). 400 401- Now sets default TCP settings for platforms that support them (e.g. Linux). 402 403 +----------------------+---------------+ 404 | Constant | Value | 405 +======================+===============+ 406 | ``TCP_KEEPIDLE`` | ``60`` | 407 +----------------------+---------------+ 408 | ``TCP_KEEPINTVL`` | ``10`` | 409 +----------------------+---------------+ 410 | ``TCP_KEEPCNT`` | ``9`` | 411 +----------------------+---------------+ 412 | ``TCP_USER_TIMEOUT`` | ``1000`` (1s) | 413 +----------------------+---------------+ 414 415 This will help detecting the socket being closed earlier, which is very 416 important in failover and load balancing scenarios. 417 418.. _version-2.1.3: 419 4202.1.3 421===== 422:release-date: 2016-12-07 06:00 P.M PST 423:release-by: Ask Solem 424 425- Fixes compatibility with Python 2.7.5 and below (Issue #107). 426 427.. _version-2.1.2: 428 4292.1.2 430===== 431:release-date: 2016-12-07 02:00 P.M PST 432 433- Linux: Now sets the :data:`~socket.TCP_USER_TIMEOUT` flag if available 434 for better failed connection detection. 435 436 Contributed by **Jelte Fennema**. 437 438 The timeout is set to the ``connect_timeout`` value by default, 439 but can also be specified by using the ``socket_settings`` argument 440 to :class:`~amqp.Connection`: 441 442 .. code-block:: python 443 444 from amqp import Connection 445 from amqp.platform import TCP_USER_TIMEOUT 446 447 conn = Connection(socket_settings={ 448 TCP_USER_TIMEOUT: int(60 * 1000), # six minutes in ms. 449 }) 450 451 When using :pypi:`Kombu` this can be specified as part of the 452 ``transport_options``: 453 454 .. code-block:: python 455 456 from amqp.platform import TCP_USER_TIMEOUT 457 from kombu import Connection 458 459 conn = Connection(transport_options={ 460 'socket_settings': { 461 TCP_USER_TIMEOUT: int(60 * 1000), # six minutes in ms. 462 }, 463 }) 464 465 Or when using :pypi:`Celery` it can be specified using the 466 ``broker_transport_options`` setting: 467 468 .. code-block:: python 469 470 from amqp.platform import TCP_USER_TIMEOUT 471 from celery import Celery 472 473 app = Celery() 474 app.conf.update( 475 broker_transport_options={ 476 TCP_USER_TIMEOUT: int(60 * 1000), # six minutes in ms. 477 } 478 ) 479 480- Python compatibility: Fixed compatibility when using the python ``-b`` flag. 481 482 Fix contributed by Jon Dufresne. 483 484.. _version-2.1.1: 485 4862.1.1 487===== 488:release-date: 2016-10-13 06:36 P.M PDT 489:release-by: Ask Solem 490 491.. _version-2.1.0: 492 493- **Requirements** 494 495 - Now depends on :ref:`Vine 1.1.3 <vine:version-1.1.3>`. 496 497- Frame writer: Account for overhead when calculating frame size. 498 499 The client would crash if the message was within a certain size. 500 501- Fixed struct unicode problems (#108) 502 503 * Standardize pack invocations on bytestrings. 504 505 * Leave some literals as strings to enable interpolation. 506 507 * Fix flake8 fail. 508 509 Fix contributed by **Brendan Smithyman**. 510 511 5122.1.0 513===== 514:release-date: 2016-09-07 04:23 P.M PDT 515:release-by: Ask Solem 516 517- **Requirements** 518 519 - Now depends on :ref:`Vine 1.1.2 <vine:version-1.1.2>`. 520 521- Now licensed under the BSD license! 522 523 Thanks to Barry Pederson for approving the license change, 524 which unifies the license used across all projects in the Celery 525 organization. 526 527- Datetimes in method frame arguments are now handled properly. 528 529- Fixed compatibility with Python <= 2.7.6 530 531- Frame_writer is no longer a generator, which should solve 532 a rare "generator already executing" error (Issue #103). 533 534.. _version-2.0.3: 535 5362.0.3 537===== 538:release-date: 2016-07-11 08:00 P.M PDT 539:release-by: Ask Solem 540 541- SSLTransport: Fixed crash "no attribute sslopts" when ``ssl=True`` 542 (Issue #100). 543 544- Fixed incompatible argument spec for ``Connection.Close`` (Issue #45). 545 546 This caused the RabbitMQ server to raise an exception (INTERNAL ERROR). 547 548- Transport: No longer implements `__del__` to make sure gc can collect 549 connections. 550 551 It's the responsibility of the caller to close connections, this was 552 simply a relic from the amqplib library. 553 554.. _version-2.0.2: 555 5562.0.2 557===== 558:release-date: 2016-06-10 5:40 P.M PDT 559:release-by: Ask Solem 560 561- Python 3: Installation requirements ended up being a generator 562 and crashed setup.py. 563 564 Fix contributed by ChangBo Guo(gcb). 565 566- Python <= 2.7.7: struct.pack arguments cannot be unicode 567 568 Fix contributed by Alan Justino and Xin Li. 569 570- Python 3.4: Fixed use of `bytes % int`. 571 572 Fix contributed by Alan Justino. 573 574- Connection/Transport: Fixed handling of default port. 575 576 Fix contributed by Quentin Pradet. 577 578.. _version-2.0.1: 579 5802.0.1 581===== 582:release-date: 2016-05-31 6:20 P.M PDT 583:release-by: Ask Solem 584 585- Adds backward compatibility layer for the 1.4 API. 586 587 Using the connection without calling ``.connect()`` first will now work, 588 but a warning is emitted and the behavior is deprecated and will be 589 removed in version 2.2. 590 591- Fixes kombu 3.0/celery 3.1 compatibility (Issue #88). 592 593 Fix contributed by Bas ten Berge. 594 595- Fixed compatibility with Python 2.7.3 (Issue #85) 596 597 Fix contributed by Bas ten Berge. 598 599- Fixed bug where calling drain_events() with a timeout of 0 would actually 600 block until a frame is received. 601 602- Documentation moved to http://amqp.readthedocs.io (Issue #89). 603 604 See https://blog.readthedocs.com/securing-subdomains/ for the reasoning 605 behind this change. 606 607 Fix contributed by Adam Chainz. 608 609.. _version-2.0.0: 610 6112.0.0 612===== 613:release-date: 2016-05-26 1:44 P.M PDT 614:release-by: Ask Solem 615 616- No longer supports Python 2.6 617 618- You must now call Connection.connect() to establish the connection. 619 620 The Connection constructor no longer has side effects, so you have 621 to explicitly call connect first. 622 623- Library rewritten to anticipate async changes. 624 625- Connection now exposes underlying socket options. 626 627 This change allows to set arbitrary TCP socket options during the creation of 628 the transport. 629 630 Those values can be set passing a dictionray where the key is the name of 631 the parameter we want to set. 632 The names of the keys are the ones reported above. 633 634 Contributed by Andrea Rosa, Dallas Marlow and Rongze Zhu. 635 636- Additional logging for heartbeats. 637 638 Contributed by Davanum Srinivas, and Dmitry Mescheryakov. 639 640- SSL: Fixes issue with remote connection hanging 641 642 Fix contributed by Adrien Guinet. 643 644- SSL: ``ssl`` dict argument now supports the ``check_hostname`` key 645 (Issue #63). 646 647 Contributed by Vic Kumar. 648 649- Contributions by: 650 651 Adrien Guinet 652 Andrea Rosa 653 Artyom Koval 654 Corey Farwell 655 Craig Jellick 656 Dallas Marlow 657 Davanum Srinivas 658 Federico Ficarelli 659 Jared Lewis 660 Rémy Greinhofer 661 Rongze Zhu 662 Yury Selivanov 663 Vic Kumar 664 Vladimir Bolshakov 665 :github_user:`lezeroq` 666 667.. _version-1.4.9: 668 6691.4.9 670===== 671:release-date: 2016-01-08 5:50 P.M PST 672:release-by: Ask Solem 673 674- Fixes compatibility with Linux/macOS instances where the ``ctypes`` module 675 does not exist. 676 677 Fix contributed by Jared Lewis. 678 679.. _version-1.4.8: 680 6811.4.8 682===== 683:release-date: 2015-12-07 12:25 A.M 684:release-by: Ask Solem 685 686- ``abstract_channel.wait`` now accepts a float `timeout` parameter expressed 687 in seconds 688 689 Contributed by Goir. 690 691.. _version-1.4.7: 692 6931.4.7 694===== 695:release-date: 2015-10-02 05:30 P.M PDT 696:release-by: Ask Solem 697 698- Fixed libSystem error on macOS 10.11 (El Capitan) 699 700 Fix contributed by Eric Wang. 701 702- ``channel.basic_publish`` now raises :exc:`amqp.exceptions.NotConfirmed` on 703 ``basic.nack``. 704 705- AMQP timestamps received are now converted from GMT instead of local time 706 (Issue #67). 707 708- Wheel package installation now supported by both Python 2 and Python3. 709 710 Fix contributed by Rémy Greinhofer. 711 712.. _version-1.4.6: 713 7141.4.6 715===== 716:release-date: 2014-08-11 06:00 P.M UTC 717:release-by: Ask Solem 718 719- Now keeps buffer when socket times out. 720 721 Fix contributed by Artyom Koval. 722 723- Adds ``Connection.Transport`` attribute that can be used to specify 724 a different transport implementation. 725 726 Contributed by Yury Selivanov. 727 728.. _version-1.4.5: 729 7301.4.5 731===== 732:release-date: 2014-04-15 09:00 P.M UTC 733:release-by: Ask Solem 734 735- Can now deserialize more AMQP types. 736 737 Now handles types ``short string``, ``short short int``, 738 ``short short unsigned int``, ``short int``, ``short unsigned int``, 739 ``long unsigned int``, ``long long int``, ``long long unsigned int`` 740 and ``float`` which for some reason was missing, even in the original 741 amqplib module. 742 743- SSL: Workaround for Python SSL bug. 744 745 A bug in the python socket library causes ``ssl.read/write()`` 746 on a closed socket to raise :exc:`AttributeError` instead of 747 :exc:`IOError`. 748 749 Fix contributed by Craig Jellick. 750 751- ``Transport.__del_`` now handles errors occurring at late interpreter 752 shutdown (Issue #36). 753 754.. _version-1.4.4: 755 7561.4.4 757===== 758:release-date: 2014-03-03 04:00 P.M UTC 759:release-by: Ask Solem 760 761- SSL transport accidentally disconnected after read timeout. 762 763 Fix contributed by Craig Jellick. 764 765.. _version-1.4.3: 766 7671.4.3 768===== 769:release-date: 2014-02-09 03:00 P.M UTC 770:release-by: Ask Solem 771 772- Fixed bug where more data was requested from the socket 773 than was actually needed. 774 775 Contributed by Ionel Cristian Mărieș. 776 777.. _version-1.4.2: 778 7791.4.2 780===== 781:release-date: 2014-01-23 05:00 P.M UTC 782 783- Heartbeat negotiation would use heartbeat value from server even 784 if heartbeat disabled (Issue #31). 785 786.. _version-1.4.1: 787 7881.4.1 789===== 790:release-date: 2014-01-14 09:30 P.M UTC 791:release-by: Ask Solem 792 793- Fixed error occurring when heartbeats disabled. 794 795.. _version-1.4.0: 796 7971.4.0 798===== 799:release-date: 2014-01-13 03:00 P.M UTC 800:release-by: Ask Solem 801 802- Heartbeat implementation improved (Issue #6). 803 804 The new heartbeat behavior is the same approach as taken by the 805 RabbitMQ java library. 806 807 This also means that clients should preferably call the ``heartbeat_tick`` 808 method more frequently (like every second) instead of using the old 809 ``rate`` argument (which is now ignored). 810 811 - Heartbeat interval is negotiated with the server. 812 - Some delay is allowed if the heartbeat is late. 813 - Monotonic time is used to keep track of the heartbeat 814 instead of relying on the caller to call the checking function 815 at the right time. 816 817 Contributed by Dustin J. Mitchell. 818 819- NoneType is now supported in tables and arrays. 820 821 Contributed by Dominik Fässler. 822 823- SSLTransport: Now handles ``ENOENT``. 824 825 Fix contributed by Adrien Guinet. 826 827.. _version-1.3.3: 828 8291.3.3 830===== 831:release-date: 2013-11-11 03:30 P.M UTC 832:release-by: Ask Solem 833 834- SSLTransport: Now keeps read buffer if an exception is raised 835 (Issue #26). 836 837 Fix contributed by Tommie Gannert. 838 839.. _version-1.3.2: 840 8411.3.2 842===== 843:release-date: 2013-10-29 02:00 P.M UTC 844:release-by: Ask Solem 845 846- Message.channel is now a channel object (not the channel id). 847 848- Bug in previous version caused the socket to be flagged as disconnected 849 at EAGAIN/EINTR. 850 851.. _version-1.3.1: 852 8531.3.1 854===== 855:release-date: 2013-10-24 04:00 P.M UTC 856:release-by: Ask Solem 857 858- Now implements Connection.connected (Issue #22). 859 860- Fixed bug where ``str(AMQPError)`` did not return string. 861 862.. _version-1.3.0: 863 8641.3.0 865===== 866:release-date: 2013-09-04 02:39 P.M UTC 867:release-by: Ask Solem 868 869- Now sets ``Message.channel`` on delivery (Issue #12) 870 871 amqplib used to make the channel object available 872 as ``Message.delivery_info['channel']``, but this was removed 873 in py-amqp. librabbitmq sets ``Message.channel``, 874 which is a more reasonable solution in our opinion as that 875 keeps the delivery info intact. 876 877- New option to wait for publish confirmations (Issue #3) 878 879 There is now a new Connection ``confirm_publish`` that will 880 force any ``basic_publish`` call to wait for confirmation. 881 882 Enabling publisher confirms like this degrades performance 883 considerably, but can be suitable for some applications 884 and now it's possible by configuration. 885 886- ``queue_declare`` now returns named tuple of type 887 :class:`~amqp.protocol.basic_declare_ok_t`. 888 889 Supporting fields: ``queue``, ``message_count``, and 890 ``consumer_count``. 891 892- Contents of ``Channel.returned_messages`` is now named tuples. 893 894 Supporting fields: ``reply_code``, ``reply_text``, ``exchange``, 895 ``routing_key``, and ``message``. 896 897- Sockets now set to close on exec using the ``FD_CLOEXEC`` flag. 898 899 Currently only supported on platforms supporting this flag, 900 which does not include Windows. 901 902 Contributed by Tommie Gannert. 903 904.. _version-1.2.1: 905 9061.2.1 907===== 908:release-date: 2013-08-16 05:30 P.M UTC 909:release-by: Ask Solem 910 911- Adds promise type: :meth:`amqp.utils.promise` 912 913- Merges fixes from 1.0.x 914 915.. _version-1.2.0: 916 9171.2.0 918===== 919:release-date: 2012-11-12 04:00 P.M UTC 920:release-by: Ask Solem 921 922- New exception hierarchy: 923 924 - :class:`~amqp.AMQPError` 925 - :class:`~amqp.ConnectionError` 926 - :class:`~amqp.RecoverableConnectionError` 927 - :class:`~amqp.ConsumerCancelled` 928 - :class:`~amqp.ConnectionForced` 929 - :class:`~amqp.ResourceError` 930 - :class:`~IrrecoverableConnectionError` 931 - :class:`~amqp.ChannelNotOpen` 932 - :class:`~amqp.FrameError` 933 - :class:`~amqp.FrameSyntaxError` 934 - :class:`~amqp.InvalidCommand` 935 - :class:`~amqp.InvalidPath` 936 - :class:`~amqp.NotAllowed` 937 - :class:`~amqp.UnexpectedFrame` 938 - :class:`~amqp.AMQPNotImplementedError` 939 - :class:`~amqp.InternalError` 940 - :class:`~amqp.ChannelError` 941 - :class:`~RecoverableChannelError` 942 - :class:`~amqp.ContentTooLarge` 943 - :class:`~amqp.NoConsumers` 944 - :class:`~amqp.ResourceLocked` 945 - :class:`~IrrecoverableChannelError` 946 - :class:`~amqp.AccessRefused` 947 - :class:`~amqp.NotFound` 948 - :class:`~amqp.PreconditionFailed` 949 950 951.. _version-1.1.0: 952 9531.1.0 954===== 955:release-date: 2013-11-08 10:36 P.M UTC 956:release-by: Ask Solem 957 958- No longer supports Python 2.5 959 960- Fixed receiving of float table values. 961 962- Now Supports Python 3 and Python 2.6+ in the same source code. 963 964- Python 3 related fixes. 965 966.. _version-1.0.13: 967 9681.0.13 969====== 970:release-date: 2013-07-31 04:00 P.M BST 971:release-by: Ask Solem 972 973- Fixed problems with the SSL transport (Issue #15). 974 975 Fix contributed by Adrien Guinet. 976 977- Small optimizations 978 979.. _version-1.0.12: 980 9811.0.12 982====== 983:release-date: 2013-06-25 02:00 P.M BST 984:release-by: Ask Solem 985 986- Fixed another Python 3 compatibility problem. 987 988.. _version-1.0.11: 989 9901.0.11 991====== 992:release-date: 2013-04-11 06:00 P.M BST 993:release-by: Ask Solem 994 995- Fixed Python 3 incompatibility in ``amqp/transport.py``. 996 997.. _version-1.0.10: 998 9991.0.10 1000====== 1001:release-date: 2013-03-21 03:30 P.M UTC 1002:release-by: Ask Solem 1003 1004- Fixed Python 3 incompatibility in ``amqp/serialization.py``. 1005 (Issue #11). 1006 1007.. _version-1.0.9: 1008 10091.0.9 1010===== 1011:release-date: 2013-03-08 10:40 A.M UTC 1012:release-by: Ask Solem 1013 1014- Publisher ack callbacks should now work after typo fix (Issue #9). 1015 1016- ``channel(explicit_id)`` will now claim that id from the array 1017 of unused channel ids. 1018 1019- Fixes Jython compatibility. 1020 1021.. _version-1.0.8: 1022 10231.0.8 1024===== 1025:release-date: 2013-02-08 01:00 P.M UTC 1026:release-by: Ask Solem 1027 1028- Fixed SyntaxError on Python 2.5 1029 1030.. _version-1.0.7: 1031 10321.0.7 1033===== 1034:release-date: 2013-02-08 01:00 P.M UTC 1035:release-by: Ask Solem 1036 1037- Workaround for bug on some Python 2.5 installations where (2**32) is 0. 1038 1039- Can now serialize the ARRAY type. 1040 1041 Contributed by Adam Wentz. 1042 1043- Fixed tuple format bug in exception (Issue #4). 1044 1045.. _version-1.0.6: 1046 10471.0.6 1048===== 1049:release-date: 2012-11-29 01:14 P.M UTC 1050:release-by: Ask Solem 1051 1052- ``Channel.close`` is now ignored if the connection attribute is None. 1053 1054.. _version-1.0.5: 1055 10561.0.5 1057===== 1058:release-date: 2012-11-21 04:00 P.M UTC 1059:release-by: Ask Solem 1060 1061- ``Channel.basic_cancel`` is now ignored if the channel was already closed. 1062 1063- ``Channel.events`` is now a dict of sets:: 1064 1065 >>> channel.events['basic_return'].add(on_basic_return) 1066 >>> channel.events['basic_return'].discard(on_basic_return) 1067 1068.. _version-1.0.4: 1069 10701.0.4 1071===== 1072:release-date: 2012-11-13 04:00 P.M UTC 1073:release-by: Ask Solem 1074 1075- Fixes Python 2.5 support 1076 1077.. _version-1.0.3: 1078 10791.0.3 1080===== 1081:release-date: 2012-11-12 04:00 P.M UTC 1082:release-by: Ask Solem 1083 1084- Now can also handle float in headers/tables when receiving messages. 1085 1086- Now uses :class:`array.array` to keep track of unused channel ids. 1087 1088- The :data:`~amqp.exceptions.METHOD_NAME_MAP` has been updated for 1089 amqp/0.9.1 and Rabbit extensions. 1090 1091- Removed a bunch of accidentally included images. 1092 1093.. _version-1.0.2: 1094 10951.0.2 1096===== 1097:release-date: 2012-11-06 05:00 P.M UTC 1098:release-by: Ask Solem 1099 1100- Now supports float values in headers/tables. 1101 1102.. _version-1.0.1: 1103 11041.0.1 1105===== 1106:release-date: 2012-11-05 01:00 P.M UTC 1107:release-by: Ask Solem 1108 1109- Connection errors no longer includes :exc:`AttributeError`. 1110 1111- Fixed problem with using the SSL transport in a non-blocking context. 1112 1113 Fix contributed by Mher Movsisyan. 1114 1115 1116.. _version-1.0.0: 1117 11181.0.0 1119===== 1120:release-date: 2012-11-05 01:00 P.M UTC 1121:release-by: Ask Solem 1122 1123- Channels are now restored on channel error, so that the connection does not 1124 have to closed. 1125 1126.. _version-0.9.4: 1127 1128Version 0.9.4 1129============= 1130 1131- Adds support for ``exchange_bind`` and ``exchange_unbind``. 1132 1133 Contributed by Rumyana Neykova 1134 1135- Fixed bugs in funtests and demo scripts. 1136 1137 Contributed by Rumyana Neykova 1138 1139.. _version-0.9.3: 1140 1141Version 0.9.3 1142============= 1143 1144- Fixed bug that could cause the consumer to crash when reading 1145 large message payloads asynchronously. 1146 1147- Serialization error messages now include the invalid value. 1148 1149.. _version-0.9.2: 1150 1151Version 0.9.2 1152============= 1153 1154- Consumer cancel notification support was broken (Issue #1) 1155 1156 Fix contributed by Andrew Grangaard 1157 1158.. _version-0.9.1: 1159 1160Version 0.9.1 1161============= 1162 1163- Supports draining events from multiple channels (``Connection.drain_events``) 1164- Support for timeouts 1165- Support for heartbeats 1166 - ``Connection.heartbeat_tick(rate=2)`` must called at regular intervals 1167 (half of the heartbeat value if rate is 2). 1168 - Or some other scheme by using ``Connection.send_heartbeat``. 1169- Supports RabbitMQ extensions: 1170 - Consumer Cancel Notifications 1171 - by default a cancel results in ``ChannelError`` being raised 1172 - but not if a ``on_cancel`` callback is passed to ``basic_consume``. 1173 - Publisher confirms 1174 - ``Channel.confirm_select()`` enables publisher confirms. 1175 - ``Channel.events['basic_ack'].append(my_callback)`` adds a callback 1176 to be called when a message is confirmed. This callback is then 1177 called with the signature ``(delivery_tag, multiple)``. 1178- Support for ``basic_return`` 1179- Uses AMQP 0-9-1 instead of 0-8. 1180 - ``Channel.access_request`` and ``ticket`` arguments to methods 1181 **removed**. 1182 - Supports the ``arguments`` argument to ``basic_consume``. 1183 - ``internal`` argument to ``exchange_declare`` removed. 1184 - ``auto_delete`` argument to ``exchange_declare`` deprecated 1185 - ``insist`` argument to ``Connection`` removed. 1186 - ``Channel.alerts`` has been removed. 1187 - Support for ``Channel.basic_recover_async``. 1188 - ``Channel.basic_recover`` deprecated. 1189- Exceptions renamed to have idiomatic names: 1190 - ``AMQPException`` -> ``AMQPError`` 1191 - ``AMQPConnectionException`` -> ConnectionError`` 1192 - ``AMQPChannelException`` -> ChannelError`` 1193 - ``Connection.known_hosts`` removed. 1194 - ``Connection`` no longer supports redirects. 1195 - ``exchange`` argument to ``queue_bind`` can now be empty 1196 to use the "default exchange". 1197- Adds ``Connection.is_alive`` that tries to detect 1198 whether the connection can still be used. 1199- Adds ``Connection.connection_errors`` and ``.channel_errors``, 1200 a list of recoverable errors. 1201- Exposes the underlying socket as ``Connection.sock``. 1202- Adds ``Channel.no_ack_consumers`` to keep track of consumer tags 1203 that set the no_ack flag. 1204- Slightly better at error recovery 1205