Skip to content

Commit 0f60b57

Browse files
PubNub SDK 10.6.2 release.
1 parent eb1fdeb commit 0f60b57

3 files changed

Lines changed: 60 additions & 5 deletions

File tree

.pubnub.yml

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: python
2-
version: 10.6.1
2+
version: 10.6.2
33
schema: 1
44
scm: github.com/pubnub/python
55
sdks:
@@ -18,7 +18,7 @@ sdks:
1818
distributions:
1919
- distribution-type: library
2020
distribution-repository: package
21-
package-name: pubnub-10.6.1
21+
package-name: pubnub-10.6.2
2222
location: https://pypi.org/project/pubnub/
2323
supported-platforms:
2424
supported-operating-systems:
@@ -94,8 +94,8 @@ sdks:
9494
-
9595
distribution-type: library
9696
distribution-repository: git release
97-
package-name: pubnub-10.6.1
98-
location: https://github.com/pubnub/python/releases/download/10.6.1/pubnub-10.6.1.tar.gz
97+
package-name: pubnub-10.6.2
98+
location: https://github.com/pubnub/python/releases/download/10.6.2/pubnub-10.6.2.tar.gz
9999
supported-platforms:
100100
supported-operating-systems:
101101
Linux:
@@ -169,6 +169,39 @@ sdks:
169169
license-url: https://github.com/encode/httpx/blob/master/LICENSE.md
170170
is-required: Required
171171
changelog:
172+
- date: 2026-03-26
173+
version: 10.6.2
174+
changes:
175+
- type: bug
176+
text: "Ensure `PubNubAsyncioException` always carries a valid `PNStatus` with error data instead of `None`."
177+
- type: bug
178+
text: "Handle cases where status or `error_data` is `None` instead of raising `AttributeError`."
179+
- type: bug
180+
text: "Match `PubNubAsyncioException` which is what `request_future` actually returns on failure."
181+
- type: bug
182+
text: "Handle `-1 (unlimited)` correctly since `attempts > -1` was always `true`, causing immediate give-up."
183+
- type: bug
184+
text: "Use delay class defaults instead of config value which could be `None` causing `TypeError` on comparison."
185+
- type: bug
186+
text: "Prevent falling through to start a heartbeat after deciding to give up."
187+
- type: bug
188+
text: "Set all four timeout fields explicitly instead of a 2-tuple that left write and pool unset."
189+
- type: bug
190+
text: "On macOS and Linux, `time.monotonic()` does not advance during system sleep, causing socket and `asyncio` timeouts (310s subscribe) to stall for hours of wall-clock time. Add `time.time()`-based deadline checks that detect sleep and cancel stale requests within ~5s of wake."
191+
- type: bug
192+
text: "Use `asyncio.wait()` with periodic `time.time()` checks instead of a single monotonic-based `wait_for()`, yielding to the event loop between checks."
193+
- type: bug
194+
text: "Persistent single daemon thread monitors `time.time()` every 5s and closes the `httpx` session when the wall-clock deadline passes, interrupting the blocking socket read. Tracks deadlines per calling thread so concurrent requests (e.g., subscribe + publish) don't interfere. Only armed for long-timeout requests (>30s). Session is recreated for subsequent requests."
195+
- type: improvement
196+
text: "Cover both `asyncio` and threads paths simulated clock jumps, normal passthrough, clean watchdog shutdown, per-thread deadline isolation, concurrent request independence, cleanup, and exception propagation."
197+
- type: improvement
198+
text: "Ensure `pubnub.stop()` always runs to prevent non-daemon threads from blocking process exit."
199+
- type: improvement
200+
text: "Enable presence heartbeat and use unique channel names so presence registers on the server."
201+
- type: improvement
202+
text: "Restore `cipher_key` after use in `send_file` and pass it explicitly to `download_file`."
203+
- type: improvement
204+
text: "Avoid collisions with stale data from prior test runs."
172205
- date: 2026-02-10
173206
version: 10.6.1
174207
changes:

CHANGELOG.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
1+
## 10.6.2
2+
March 26 2026
3+
4+
#### Fixed
5+
- Ensure `PubNubAsyncioException` always carries a valid `PNStatus` with error data instead of `None`.
6+
- Handle cases where status or `error_data` is `None` instead of raising `AttributeError`.
7+
- Match `PubNubAsyncioException` which is what `request_future` actually returns on failure.
8+
- Handle `-1 (unlimited)` correctly since `attempts > -1` was always `true`, causing immediate give-up.
9+
- Use delay class defaults instead of config value which could be `None` causing `TypeError` on comparison.
10+
- Prevent falling through to start a heartbeat after deciding to give up.
11+
- Set all four timeout fields explicitly instead of a 2-tuple that left write and pool unset.
12+
- On macOS and Linux, `time.monotonic()` does not advance during system sleep, causing socket and `asyncio` timeouts (310s subscribe) to stall for hours of wall-clock time. Add `time.time()`-based deadline checks that detect sleep and cancel stale requests within ~5s of wake.
13+
- Use `asyncio.wait()` with periodic `time.time()` checks instead of a single monotonic-based `wait_for()`, yielding to the event loop between checks.
14+
- Persistent single daemon thread monitors `time.time()` every 5s and closes the `httpx` session when the wall-clock deadline passes, interrupting the blocking socket read. Tracks deadlines per calling thread so concurrent requests (e.g., subscribe + publish) don't interfere. Only armed for long-timeout requests (>30s). Session is recreated for subsequent requests.
15+
16+
#### Modified
17+
- Cover both `asyncio` and threads paths simulated clock jumps, normal passthrough, clean watchdog shutdown, per-thread deadline isolation, concurrent request independence, cleanup, and exception propagation.
18+
- Ensure `pubnub.stop()` always runs to prevent non-daemon threads from blocking process exit.
19+
- Enable presence heartbeat and use unique channel names so presence registers on the server.
20+
- Restore `cipher_key` after use in `send_file` and pass it explicitly to `download_file`.
21+
- Avoid collisions with stale data from prior test runs.
22+
123
## 10.6.1
224
February 10 2026
325

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name='pubnub',
5-
version='10.6.1',
5+
version='10.6.2',
66
description='PubNub Real-time push service in the cloud',
77
author='PubNub',
88
author_email='support@pubnub.com',

0 commit comments

Comments
 (0)