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_ids
client 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
KeyError
when releasing a channel which doesn't exist #474 - Allow token auth methods for realtime constructor #425
- Send
AUTH
protocol message whenAuth.authorize
called on realtime client #427 - Reauth upon inbound
AUTH
protocol message #428 - Handle connection request failure due to token error #445
- Handle token
ERROR
response to a resume request #444 - Handle
DISCONNECTED
messages containing token errors #443 - Pass
clientId
as query string param when opening a new connection #449 - Validate
clientId
inClientOptions
#448 - Apply
Auth#clientId
only after a realtime connection has been established #409 - Channels should transition to
INITIALIZED
ifConnection.connect
called from terminal state #411 - Calling connect while
CLOSING
should 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
CONNECTED
messages once connected #345 - Implement
maxIdleInterval
#344 - Implement realtime connectivity check #343
- Use fallback realtime hosts when encountering an appropriate error #342
- Add
fallbackHosts
client 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
CONNECTING
orDISCONNECTED
#418 - Propagate connection interruptions to realtime channels #417
- Spec compliance:
Realtime.connect
should be sync #413 - Emit
update
event on additionalATTACHED
message #386 - Set the
ATTACH_RESUME
flag 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
connectionStateTtl
elapsed #379 - Refactor websocket async tasks into WebSocketTransport class #373
- Send version transport param #368
- Clear
Connection.error_reason
whenConnection.connect
is 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_connect
implementation 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
KeyError
when 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
AUTH
protocol message whenAuth.authorize
called on realtime client #427 - Reauth upon inbound
AUTH
protocol message #428 - Handle connection request failure due to token error #445
- Handle token
ERROR
response to a resume request #444 - Handle
DISCONNECTED
messages containing token errors #443 - Pass
clientId
as query string param when opening a new connection #449 - Validate
clientId
inClientOptions
#448 - Apply
Auth#clientId
only after a realtime connection has been established #409 - Channels should transition to
INITIALIZED
ifConnection.connect
called from terminal state #411 - Calling connect while
CLOSING
should 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
CONNECTED
messages once connected #345 - Implement
maxIdleInterval
#344 - Implement realtime connectivity check #343
- Use fallback realtime hosts when encountering an appropriate error #342
- Add
fallbackHosts
client 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
CONNECTING
orDISCONNECTED
#418 - Propagate connection interruptions to realtime channels #417
- Spec compliance:
Realtime.connect
should be sync #413 - Emit
update
event on additionalATTACHED
message #386 - Set the
ATTACH_RESUME
flag 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
connectionStateTtl
elapsed #379 - Refactor websocket async tasks into WebSocketTransport class #373
- Send version transport param #368
- Clear
Connection.error_reason
whenConnection.connect
is 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_connect
implementation 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
modified
property 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
ably
module 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