- Added realtime and rest support for Annotations API #667
- Added realtime publish support for publishing messages to channels over the realtime connection #648
- Added realtime presence support, allowing clients to enter, leave, update presence data, and track presence on channels #651
- Added mutable messages API with support for editing, deleting, and appending to messages #660, #659
- Added publish results containing serial of published messages #660, #659
- Deprecated
environment,rest_host, andrealtime_hostclient options in favor ofendpointoption #590
The 3.0.0 version of ably-python introduces several breaking changes to improve the realtime experience and align the API with the Ably specification. These include:
- The realtime channel publish method now uses WebSocket connection instead of REST
ably.realtime.realtime_channelmodule renamed toably.realtime.channelChannelOptionsmoved toably.types.channeloptions- REST publish returns publish result with message serials instead of Response object
- Deprecated
environment,rest_host, andrealtime_hostclient options in favor ofendpointoption
For detailed migration instructions, please refer to the Upgrading Guide.
- Got rid of
methoddispatchdependency in #639 - Upgraded internal build tools
- Added missed
syncfolder to the wheel package
- Added support for VCDiff delta-compressed messages. If VCDiff compression is enabled in the client options, and deltas are provided by the Ably service, the SDK reconstructs full message payloads from the base content and the received delta, reducing bandwidth usage without requiring changes to your application code. #620
- Removed await from sync
connect()function call by @kavindail in #605 - Upgraded websockets dependency to support 15+ by @ttypic in #612
Closed issues:
- The REST client’s retry mechanism doesn’t follow the spec and doesn’t retry when it should #597
Closed issues:
- Support
websocketsversion 13 #591
Fixed sync version of the library
Fixed bugs:
- Fix the inability to pass a JSON string value for a
capabilityparameter when creating a token #579
Closed issues:
- Support
pyee12 #580
Fixed bugs:
- Fix
TypeError: '>' not supported between instances of 'float' and 'NoneType'in http #573
Fixed bugs:
- Decoding issue for 40010 Error (Invalid Channel Name) #569
Closed issues:
- Support httpx 0.26, 0.27 and so on #560
Merged pull requests:
Closed issues:
- Question: Bump websockets version #556
- "RuntimeError: no running event loop" exception when connecting to Realtime #555
Merged pull requests:
Merged pull requests:
Closed issues:
- Support for python 3.12 #546
Merged pull requests:
- Support latest python versions #547 (sacOO7)
- Update README.md to add in 'publish message to channel including metadata' #545 (cameron-michie)
Implemented enhancements:
Closed issues:
- Update httpx dependency to version 0.24.1 or higher #523
Merged pull requests:
- Updated poetry httpx dependency and lock file #524 (sacOO7)
- Remove unused dependency: h2 #526 (gdrosos)
- Add sync support using unasync #537 (sacOO7)
Closed issues:
- Implement / Add tests for TM1,TM2,TM3 Message spec #516
Merged pull requests:
New ably-python realtime client: This new release features our first ever python realtime client! Currently the realtime client only supports realtime message subscription. Check out the README for usage examples. There have been some minor breaking changes from the 1.2 version, please consult the migration guide for instructions on how to upgrade to 2.0.
- refactor!: add mandatory version param to
Rest.request#500 - bump api_version to 2.0, add DeviceDetails.deviceSecret #507
- Include cause in AblyException.str result #508
- feat!: use api v3 and untyped stats #505
- Implement
add_request_idsclient option #399 - Improve logger output upon disconnection #492
- Fix an issue where in some cases the client was unable to recover after loss of connectivity #493
- Remove soft-deprecated APIs #482
- Improve realtime client typings #476
- Improve REST client typings #477
- Stop raising
KeyErrorwhen releasing a channel which doesn't exist #474 - Allow token auth methods for realtime constructor #425
- Send
AUTHprotocol message whenAuth.authorizecalled on realtime client #427 - Reauth upon inbound
AUTHprotocol message #428 - Handle connection request failure due to token error #445
- Handle token
ERRORresponse to a resume request #444 - Handle
DISCONNECTEDmessages containing token errors #443 - Pass
clientIdas query string param when opening a new connection #449 - Validate
clientIdinClientOptions#448 - Apply
Auth#clientIdonly after a realtime connection has been established #409 - Channels should transition to
INITIALIZEDifConnection.connectcalled from terminal state #411 - Calling connect while
CLOSINGshould start connect on a new transport #410 - Handle realtime channel errors #455
- Resend protocol messages for pending channels upon resume #347
- Attempt to resume connection when disconnected unexpectedly #346
- Handle
CONNECTEDmessages once connected #345 - Implement
maxIdleInterval#344 - Implement realtime connectivity check #343
- Use fallback realtime hosts when encountering an appropriate error #342
- Add
fallbackHostsclient option for realtime clients #341 - Implement
connectionStateTtl#340 - Implement
disconnectedRetryTimeout#339 - Handle recoverable connection opening errors #338
- Implement
channelRetryTimeout#442 - Queue protocol messages when connection state is
CONNECTINGorDISCONNECTED#418 - Propagate connection interruptions to realtime channels #417
- Spec compliance:
Realtime.connectshould be sync #413 - Emit
updateevent on additionalATTACHEDmessage #386 - Set the
ATTACH_RESUMEflag on unclean attach #385 - Handle fatal resume error #384
- Handle invalid resume response #383
- Handle clean resume response #382
- Send resume query param when reconnecting within
connectionStateTtl#381 - Immediately reattempt connection when unexpectedly disconnected #380
- Clear connection state when
connectionStateTtlelapsed #379 - Refactor websocket async tasks into WebSocketTransport class #373
- Send version transport param #368
- Clear
Connection.error_reasonwhenConnection.connectis called #367 - Fix a bug with realtime_host configuration #358
- Create Basic Api Key connection #311
- Send Ably-Agent header in realtime connection #314
- Close client service #315
- Implement EventEmitter interface on Connection #316
- Finish tasks gracefully on failed connection #317
- Implement realtime ping #318
- Realtime channel attach/detach #319
- Add
auto_connectimplementation and client option #325 - RealtimeChannel subscribe/unsubscribe #326
- ConnectionStateChange #327
- Improve realtime logging #330
- Update readme with realtime documentation [#334](334](#334)
- Use string-based enums #351
- Add environment client option for realtime #335
- EventEmitter: allow signatures with no event arg #350
- Improve logger output upon disconnection #492
- Fix an issue where in some cases the client was unable to recover after loss of connectivity #493
The latest beta release of ably-python 2.0 makes some minor breaking changes, removing already soft-deprecated features from the 1.x branch. Most users will not be affected by these changes since the library was already warning that these features were deprecated. For information on how to migrate, please consult the migration guide.
- Remove soft-deprecated APIs #482
- Improve realtime client typings #476
- Improve REST client typings #477
- Stop raising
KeyErrorwhen releasing a channel which doesn't exist #474
This new beta release of the ably-python realtime client implements token authentication for realtime connections, allowing you to use all currently supported token options to authenticate a realtime client (auth_url, auth_callback, jwt, etc). The client will reauthenticate when the token expires or otherwise becomes invalid.
- Allow token auth methods for realtime constructor #425
- Send
AUTHprotocol message whenAuth.authorizecalled on realtime client #427 - Reauth upon inbound
AUTHprotocol message #428 - Handle connection request failure due to token error #445
- Handle token
ERRORresponse to a resume request #444 - Handle
DISCONNECTEDmessages containing token errors #443 - Pass
clientIdas query string param when opening a new connection #449 - Validate
clientIdinClientOptions#448 - Apply
Auth#clientIdonly after a realtime connection has been established #409 - Channels should transition to
INITIALIZEDifConnection.connectcalled from terminal state #411 - Calling connect while
CLOSINGshould start connect on a new transport #410 - Handle realtime channel errors #455
This new beta release of the ably-python realtime client implements a number of new features to improve the stability of realtime connections, allowing the client to reconnect during a temporary disconnection, use fallback hosts when necessary, and catch up on messages missed while the client was disconnected.
- Resend protocol messages for pending channels upon resume #347
- Attempt to resume connection when disconnected unexpectedly #346
- Handle
CONNECTEDmessages once connected #345 - Implement
maxIdleInterval#344 - Implement realtime connectivity check #343
- Use fallback realtime hosts when encountering an appropriate error #342
- Add
fallbackHostsclient option for realtime clients #341 - Implement
connectionStateTtl#340 - Implement
disconnectedRetryTimeout#339 - Handle recoverable connection opening errors #338
- Implement
channelRetryTimeout#442 - Queue protocol messages when connection state is
CONNECTINGorDISCONNECTED#418 - Propagate connection interruptions to realtime channels #417
- Spec compliance:
Realtime.connectshould be sync #413 - Emit
updateevent on additionalATTACHEDmessage #386 - Set the
ATTACH_RESUMEflag on unclean attach #385 - Handle fatal resume error #384
- Handle invalid resume response #383
- Handle clean resume response #382
- Send resume query param when reconnecting within
connectionStateTtl#381 - Immediately reattempt connection when unexpectedly disconnected #380
- Clear connection state when
connectionStateTtlelapsed #379 - Refactor websocket async tasks into WebSocketTransport class #373
- Send version transport param #368
- Clear
Connection.error_reasonwhenConnection.connectis called #367
- Fix a bug with realtime_host configuration #358
New ably-python realtime client: This beta release features our first ever python realtime client! Currently the realtime client only supports basic authentication and realtime message subscription. Check out the README for usage examples.
- Create Basic Api Key connection #311
- Send Ably-Agent header in realtime connection #314
- Close client service #315
- Implement EventEmitter interface on Connection #316
- Finish tasks gracefully on failed connection #317
- Implement realtime ping #318
- Realtime channel attach/detach #319
- Add
auto_connectimplementation and client option #325 - RealtimeChannel subscribe/unsubscribe #326
- ConnectionStateChange #327
- Improve realtime logging #330
- Update readme with realtime documentation [#334](334](#334)
- Use string-based enums #351
- Add environment client option for realtime #335
- EventEmitter: allow signatures with no event arg #350
Implemented enhancements:
Breaking API Changes: Please see our Upgrade / Migration Guide for notes on changes you need to make to your code to update it to use the new API introduced by version 1.2.0.
Implemented enhancements:
- Respect content-type with charset #256
- Release a new version for python 3.10 support #249
- Support HTTP/2 #197
- Support Async HTTP #171
- Implement RSC7d (Ably-Agent header) #168
- Defaults: Generate environment fallbacks #155
- Clarify string encoding when sending push notifications #119
- Support for environments fallbacks #198 (d8x)
Fixed bugs:
Closed issues:
- Conform ReadMe and create Contributing Document #199
- Add support for DataTypes TokenParams AO2g #187
- Add support for TO3m [#172](#172
- Using a clientId should no longer be forcing token auth in the 1.1 spec #149
Merged pull requests:
- Add support for Python 3.10, age out 3.6 #253 (tomkirbygreen)
- Compat with 'httpx' public API changes. #252 (tomkirbygreen)
- Respect content-type with charset #248 (tomkirbygreen)
- 'TypedBuffer' fix attempt to call a non-callable object #226 (tomkirbygreen)
- 'auth' module, fix possible unbound local variables warning #225 (tomkirbygreen)
- rest setup - fix redeclared name without usage #217 (tomkirbygreen)
- Fixes mutable-value used as argument default value #215 (tomkirbygreen)
- Fixes most of the PEP 8 coding style violations #214 (tomkirbygreen)
- 'Channel' remove unused 'history' parameter 'timeout'. #209 (tomkirbygreen)
- [#149] Specifying clientId does not force token auth #204 (d8x)
- Support for async #202 (d8x)
- Support for HTTP/2 Protocol #200 (d8x)
- Add missing
modifiedproperty in DeviceDetails #196 (d8x) - RSC7d - Support for Ably-Agent header #195 (d8x)
- fix error message for invalid push data type #169 (netspencer)
- Raise error if all servers reply with a 5xx response #161 (jdavid)
Implemented enhancements:
- Improve handling of clock skew #145
- Test variable length 256 bit AES CBC fixtures #150 (QuintinWillison)
Closed issues:
- Remove develop branch #151
Merged pull requests:
- bump msgpack version to 1.0.0 and update tests #152 (abordeau)
- Fix flake8 #148 (jdavid)
- RSA4b1 Detect expired token to avoid extra request #147 (jdavid)
- push.admin.publish returns None #146 (jdavid)
- 'Known limitations' section in the README #143 (Srushtika)
Closed issues:
- Idempotent publishing is not enabled in the upcoming 1.1 release #132
- forward slash in channel name #130
- Refactor tests setup #109
Implemented enhancements:
- Add support for remembered REST fallback host #131
- Ensure request method accepts UPDATE, PATCH & DELETE verbs #128
- Add idempotent REST publishing support #121
- Allow to configure logger #107
Merged pull requests:
- Fix flake8 #142 (jdavid)
- Rsc15f Support for remembered REST fallback host #141 (jdavid)
- Add patch #135 (jdavid)
- Idempotent publishing #129 (jdavid)
- Push #127 (jdavid)
- RSH1c5 New push.admin.channel_subscriptions.remove_where #126 (jdavid)
- RSH1c4 New push.admin.channel_subscriptions.remove #125 (jdavid)
- RSH1c2 New push.admin.channel_subscriptions.list_channels #124 (jdavid)
- RSH1c1 New push.admin.channel_subscriptions.list #120 (jdavid)
- RSH1c3 New push.admin.channel_subscriptions.save #118 (jdavid)
- RHS1b5 New push.admin.device_registrations.remove_where #117 (jdavid)
- RHS1b4 New push.admin.device_registrations.remove #116 (jdavid)
- RSH1b2 New push.admin.device_registrations.list #114 (jdavid)
- Rsh1b1 New push.admin.device_registrations.get #113 (jdavid)
- RSH1b3 New push.admin.device_registrations.save #112 (jdavid)
- Document how to configure logging #110 (jdavid)
- Rsh1a New push.admin.publish #106 (jdavid)
v1.0.3 (2019-01-18)
Closed issues:
- Travis failures with Python 2 in the 1.0 branch #138
Fixed bugs:
- Authentication with auth_url doesn't accept camel case #136
Merged pull requests:
v1.0.2 (2018-12-10)
Fixed bugs:
- HTTP connection pooling #133
- Timeouts when publishing messages #111
- AWS lambda packaging #97
- Rate limit requests to sandbox app #68
Closed issues:
Merged pull requests:
- Fix README so it doesn't mislead ttl to be in s #105 (jdavid)
- Fix tests #103 (jdavid)
- Update README with supported platforms #102 (funkyboy)
v1.0.1 (2017-12-20)
Implemented enhancements:
Fixed bugs:
- Travis random failures #88
Closed issues:
- pycrypto --> pycryptodome #96
ablymodule seems to be broken / empty in some circumstances #95- installing via pip installs a more restrictive version of requests #91
- Add test coverage to prevent possible MsgPack regression #89
- 1.0 spec review #84
- When using python2 with msgpack, dicts are not encoded correctly #72
Merged pull requests:
- Fix unit tests #99 (jdavid)
- Switch to cryptodome #98 (jdavid)
- ttl: use isinstance instead of type #94 (jdavid)
- Fix Flake8 warnings regarding spacing #93 (sginn)
- Bumped upper limit on requests library, and removed websocket #92 (sginn)
- Fix #65, #71, #72, #86 and #89 #90 (jdavid)
v1.0.0 (2017-03-07)
- See ably/docs#235
Implemented enhancements:
- RSC19*, HP* - New REST #request method + HttpPaginatedResponse type #78
- Update REST library for realtime platform to v1.0 specification #77
Closed issues:
- requests version pin too strict? #66
Merged pull requests:
- Issue#84 TP4, RSC15a (test), RSC19e (test), .. #87 (jdavid)
- Fix issue 72 #85 (jdavid)
- Fix README, now using pytest instead of nose #83 (jdavid)
- RSA5, RSA6, RSA10, RSL*, TM*, TE6, TD7 #82 (jdavid)
v0.8.2 (2017-02-17)
Implemented enhancements:
Fixed bugs:
- Do not persist authorise attributes force & timestamp #52
Closed issues:
- Publish on PyPI #50
Merged pull requests:
- RSC7, RSC11, RSC15, RSC19 #81 (jdavid)
- Several python code repo improvements #73 (txomon)
- updated reqests version in requirements #67 (essweine)
v0.8.1 (2016-03-22)
Implemented enhancements:
Closed issues:
- when msgpack enabled, python 2 string literals are encoded as binaries #60
Merged pull requests:
- Python 2: assume str is intended as a string #64 (SimonWoolf)
- Implement latest encryption spec #63 (SimonWoolf)
- RSA7b4, RSA8f3, RSA8f4 #62 (fjsj)
- RSA7a4 #61 (fjsj)
- RSA7a2 #59 (fjsj)
- RSA12 #58 (fjsj)
v0.8.0 (2016-03-10)
Implemented enhancements:
Fixed bugs:
Closed issues:
- AblyException does not have __str__ #32
- Add a requirements-test.txt #29
- Fix message on test #23
- Rename test_channels_remove to test_channels_release #20
- Add comments in Python 2/3 code at ably/rest/channel.py #19
- Support for 2.6 #10
- Spec validation #9
Merged pull requests:
- Fixes for PyPI publishing (already published) #57 (fjsj)
- RSL1g #55 (fjsj)
- Ensure that force and timestamp are not stored in authorise #53 (meiralins)
- Improve readme, fix setup.py and add support for Python 3.5. #51 (meiralins)
- Minor adjustments to fit specs. #49 (meiralins)
- More changes to auth to fit specs. #47 (meiralins)
- Changes to auth to fit specs. #46 (aericson)
- Changes to client options #44 (aericson)
- RSA10: Auth#authorise #43 (aericson)
- Done with stats, as well as varying every test to each protocol (G1) #41 (aericson)
- Requirements test #40 (aericson)
- Now when sending binary data messages one should use bytearray #39 (aericson)
- Fix travis #37 (aericson)
- Rsc7 and rsc18 #36 (aericson)
- Message pack #35 (aericson)
- Add Query time parameter TO3j10 and RSA9d #34 (aericson)
- Missing channel tests #33 (aericson)
- RSL2a and RSL2b3 - Channel#history #31 (aericson)
- Message encoding #30 (aericson)
- RSC13 and RSC15 - Hosts fallback and timeouts #28 (fjsj)
- RSP Presence, TG PaginatedResult and Presence Message TP #26 (aericson)
- (RSL1d) Indicates an error if the message was not successfully published to Ably #25 (fjsj)
- Fix wrongly named tests #24 (fjsj)
- RSL1a, RSL1b, RSL1e and RSL1c (incomplete) #21 (fjsj)
- Channels - RSN1 to RSN4a #18 (fjsj)
- Rsc1 api constructor #16 (aericson)
- Fix travis #15 (fjsj)
- Fix tests except for crypto, messagepack and stats #14 (aericson)
- Fix the readme with the examples and the links #5 (matrixise)
- Ably Python Rest Library Testing Fixes #3 (jcrubino)
* This Change Log was automatically generated by github_changelog_generator