Skip to content

Commit 6a3440d

Browse files
seba-alnClient Engineering Bot
andauthored
Fix pagination in objects_endpoint (#120)
* Fix pagination in objects_endpoint * PubNub SDK v6.3.1 release. Co-authored-by: Client Engineering Bot <60980775+Client Engineering Bot@users.noreply.github.com>
1 parent e08fdd7 commit 6a3440d

File tree

7 files changed

+166
-9
lines changed

7 files changed

+166
-9
lines changed

.pubnub.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: python
2-
version: 6.3.0
2+
version: 6.3.1
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-6.3.0
21+
package-name: pubnub-6.3.1
2222
location: https://pypi.org/project/pubnub/
2323
supported-platforms:
2424
supported-operating-systems:
@@ -97,8 +97,8 @@ sdks:
9797
-
9898
distribution-type: library
9999
distribution-repository: git release
100-
package-name: pubnub-6.3.0
101-
location: https://github.com/pubnub/python/releases/download/v6.3.0/pubnub-6.3.0.tar.gz
100+
package-name: pubnub-6.3.1
101+
location: https://github.com/pubnub/python/releases/download/v6.3.1/pubnub-6.3.1.tar.gz
102102
supported-platforms:
103103
supported-operating-systems:
104104
Linux:
@@ -169,6 +169,11 @@ sdks:
169169
license-url: https://github.com/aio-libs/aiohttp/blob/master/LICENSE.txt
170170
is-required: Required
171171
changelog:
172+
- date: 2022-04-27
173+
version: v6.3.1
174+
changes:
175+
- type: bug
176+
text: "This issue was mentioned in issue #118 and replaces PR #119 to match our PR policy."
172177
- date: 2022-04-01
173178
version: v6.3.0
174179
changes:

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## v6.3.1
2+
April 27 2022
3+
4+
#### Fixed
5+
- This issue was mentioned in issue #118 and replaces PR #119 to match our PR policy. Fixed the following issues reported by [@tjazsilovsek](https://github.com/tjazsilovsek) and [@tjazsilovsek](https://github.com/tjazsilovsek): [#118](https://github.com/pubnub/python/issues/118) and [#119](https://github.com/pubnub/python/issues/119).
6+
17
## v6.3.0
28
April 01 2022
39

pubnub/endpoints/objects_v2/objects_endpoint.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ def custom_params(self):
7373

7474
if self._page:
7575
if isinstance(self._page, Next):
76-
params["start"] = self._page.hash()
76+
params["start"] = self._page.hash
7777
elif isinstance(self._page, Previous):
78-
params["end"] = self._page.hash()
78+
params["end"] = self._page.hash
7979
else:
8080
raise ValueError()
8181

pubnub/pubnub_core.py

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

6666
class PubNubCore:
6767
"""A base class for PubNub Python API implementations"""
68-
SDK_VERSION = "6.3.0"
68+
SDK_VERSION = "6.3.1"
6969
SDK_NAME = "PubNub-Python"
7070

7171
TIMESTAMP_DIVIDER = 1000

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='6.3.0',
5+
version='6.3.1',
66
description='PubNub Real-time push service in the cloud',
77
author='PubNub',
88
author_email='support@pubnub.com',
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
interactions:
2+
- request:
3+
body: '{"set": [{"uuid": {"id": "test-fix-118-0"}}, {"uuid": {"id": "test-fix-118-1"}},
4+
{"uuid": {"id": "test-fix-118-2"}}, {"uuid": {"id": "test-fix-118-3"}}, {"uuid":
5+
{"id": "test-fix-118-4"}}, {"uuid": {"id": "test-fix-118-5"}}, {"uuid": {"id":
6+
"test-fix-118-6"}}, {"uuid": {"id": "test-fix-118-7"}}, {"uuid": {"id": "test-fix-118-8"}},
7+
{"uuid": {"id": "test-fix-118-9"}}, {"uuid": {"id": "test-fix-118-10"}}, {"uuid":
8+
{"id": "test-fix-118-11"}}, {"uuid": {"id": "test-fix-118-12"}}, {"uuid": {"id":
9+
"test-fix-118-13"}}, {"uuid": {"id": "test-fix-118-14"}}], "delete": []}'
10+
headers:
11+
Accept:
12+
- '*/*'
13+
Accept-Encoding:
14+
- gzip, deflate
15+
Connection:
16+
- keep-alive
17+
Content-Length:
18+
- '568'
19+
User-Agent:
20+
- PubNub-Python/6.3.0
21+
method: PATCH
22+
uri: https://ps.pndsn.com/v2/objects/sub-c-33f55052-190b-11e6-bfbc-02ee2ddab7fe/channels/somechannelid/uuids
23+
response:
24+
body:
25+
string: '{"status":200,"data":[{"uuid":{"id":"test-fix-118-0"},"updated":"2022-04-21T10:05:14.580127Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-1"},"updated":"2022-04-21T10:05:14.58336Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-10"},"updated":"2022-04-21T10:05:14.605349Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-11"},"updated":"2022-04-21T10:05:14.608585Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-12"},"updated":"2022-04-21T10:05:14.597527Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-13"},"updated":"2022-04-21T10:05:14.576398Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-14"},"updated":"2022-04-21T10:05:14.611731Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-2"},"updated":"2022-04-21T10:05:14.586304Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-3"},"updated":"2022-04-21T10:05:14.58986Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-4"},"updated":"2022-04-21T10:05:14.593492Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-5"},"updated":"2022-04-21T10:05:14.567831Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-6"},"updated":"2022-04-21T10:05:14.572508Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-7"},"updated":"2022-04-21T10:05:14.601774Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-8"},"updated":"2022-04-21T10:05:14.615379Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-9"},"updated":"2022-04-21T10:05:14.618906Z","eTag":"AY39mJKK//C0VA"}],"next":"MTU"}'
26+
headers:
27+
Access-Control-Allow-Credentials:
28+
- 'true'
29+
Access-Control-Allow-Origin:
30+
- '*'
31+
Connection:
32+
- keep-alive
33+
Content-Length:
34+
- '1494'
35+
Content-Type:
36+
- application/json
37+
Date:
38+
- Thu, 21 Apr 2022 10:31:13 GMT
39+
status:
40+
code: 200
41+
message: OK
42+
- request:
43+
body: null
44+
headers:
45+
Accept:
46+
- '*/*'
47+
Accept-Encoding:
48+
- gzip, deflate
49+
Connection:
50+
- keep-alive
51+
User-Agent:
52+
- PubNub-Python/6.3.0
53+
method: GET
54+
uri: https://ps.pndsn.com/v2/objects/sub-c-33f55052-190b-11e6-bfbc-02ee2ddab7fe/channels/somechannelid/uuids?limit=10
55+
response:
56+
body:
57+
string: '{"status":200,"data":[{"uuid":{"id":"test-fix-118-0"},"updated":"2022-04-21T10:05:14.580127Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-1"},"updated":"2022-04-21T10:05:14.58336Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-10"},"updated":"2022-04-21T10:05:14.605349Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-11"},"updated":"2022-04-21T10:05:14.608585Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-12"},"updated":"2022-04-21T10:05:14.597527Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-13"},"updated":"2022-04-21T10:05:14.576398Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-14"},"updated":"2022-04-21T10:05:14.611731Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-2"},"updated":"2022-04-21T10:05:14.586304Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-3"},"updated":"2022-04-21T10:05:14.58986Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-4"},"updated":"2022-04-21T10:05:14.593492Z","eTag":"AY39mJKK//C0VA"}],"next":"MTA"}'
58+
headers:
59+
Access-Control-Allow-Credentials:
60+
- 'true'
61+
Access-Control-Allow-Origin:
62+
- '*'
63+
Connection:
64+
- keep-alive
65+
Content-Length:
66+
- '1009'
67+
Content-Type:
68+
- application/json
69+
Date:
70+
- Thu, 21 Apr 2022 10:31:13 GMT
71+
status:
72+
code: 200
73+
message: OK
74+
- request:
75+
body: null
76+
headers:
77+
Accept:
78+
- '*/*'
79+
Accept-Encoding:
80+
- gzip, deflate
81+
Connection:
82+
- keep-alive
83+
User-Agent:
84+
- PubNub-Python/6.3.0
85+
method: GET
86+
uri: https://ps.pndsn.com/v2/objects/sub-c-33f55052-190b-11e6-bfbc-02ee2ddab7fe/channels/somechannelid/uuids?limit=10&start=MTA
87+
response:
88+
body:
89+
string: '{"status":200,"data":[{"uuid":{"id":"test-fix-118-5"},"updated":"2022-04-21T10:05:14.567831Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-6"},"updated":"2022-04-21T10:05:14.572508Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-7"},"updated":"2022-04-21T10:05:14.601774Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-8"},"updated":"2022-04-21T10:05:14.615379Z","eTag":"AY39mJKK//C0VA"},{"uuid":{"id":"test-fix-118-9"},"updated":"2022-04-21T10:05:14.618906Z","eTag":"AY39mJKK//C0VA"}],"next":"MTU","prev":"MTA"}'
90+
headers:
91+
Access-Control-Allow-Credentials:
92+
- 'true'
93+
Access-Control-Allow-Origin:
94+
- '*'
95+
Connection:
96+
- keep-alive
97+
Content-Length:
98+
- '534'
99+
Content-Type:
100+
- application/json
101+
Date:
102+
- Thu, 21 Apr 2022 10:31:13 GMT
103+
status:
104+
code: 200
105+
message: OK
106+
version: 1

tests/integrational/native_sync/objects_v2/test_channel_members.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
from pubnub.endpoints.objects_v2.members.remove_channel_members import RemoveChannelMembers
66
from pubnub.endpoints.objects_v2.members.set_channel_members import SetChannelMembers
77
from pubnub.models.consumer.common import PNStatus
8-
from pubnub.models.consumer.objects_v2.channel_members import PNUUID, PNSetChannelMembersResult, \
8+
from pubnub.models.consumer.objects_v2.channel_members import PNUUID, JustUUID, PNSetChannelMembersResult, \
99
PNGetChannelMembersResult, PNRemoveChannelMembersResult, PNManageChannelMembersResult
10+
from pubnub.models.consumer.objects_v2.page import PNPage
1011
from pubnub.pubnub import PubNub
1112
from pubnub.structures import Envelope
1213
from tests.helper import pnconf_copy
@@ -131,6 +132,45 @@ def test_get_channel_members_happy_path(self):
131132
assert len([e for e in data if e['uuid']['custom'] == custom_1]) != 0
132133
assert len([e for e in data if e['custom'] == custom_2]) != 0
133134

135+
@pn_vcr.use_cassette(
136+
'tests/integrational/fixtures/native_sync/objects_v2/channel_members/get_channel_members_with_pagination.yaml',
137+
filter_query_parameters=['uuid', 'pnsdk'])
138+
def test_get_channel_members_with_pagination(self):
139+
pn = _pubnub()
140+
141+
pn.set_channel_members().channel(TestObjectsV2ChannelMembers._some_channel_id) \
142+
.uuids([JustUUID(f'test-fix-118-{x}') for x in range(15)]) \
143+
.sync()
144+
145+
get_channel_members_result_page_1 = pn.get_channel_members()\
146+
.channel(TestObjectsV2ChannelMembers._some_channel_id)\
147+
.limit(10) \
148+
.sync()
149+
150+
assert isinstance(get_channel_members_result_page_1, Envelope)
151+
assert isinstance(get_channel_members_result_page_1.result, PNGetChannelMembersResult)
152+
assert isinstance(get_channel_members_result_page_1.status, PNStatus)
153+
assert isinstance(get_channel_members_result_page_1.result.next, PNPage)
154+
155+
assert not get_channel_members_result_page_1.status.is_error()
156+
data = get_channel_members_result_page_1.result.data
157+
assert len(data) == 10
158+
159+
get_channel_members_result_page_2 = pn.get_channel_members() \
160+
.channel(TestObjectsV2ChannelMembers._some_channel_id) \
161+
.limit(10) \
162+
.page(get_channel_members_result_page_1.result.next) \
163+
.sync()
164+
165+
assert isinstance(get_channel_members_result_page_2, Envelope)
166+
assert isinstance(get_channel_members_result_page_2.result, PNGetChannelMembersResult)
167+
assert isinstance(get_channel_members_result_page_2.status, PNStatus)
168+
assert isinstance(get_channel_members_result_page_2.result.next, PNPage)
169+
170+
assert not get_channel_members_result_page_2.status.is_error()
171+
data = get_channel_members_result_page_2.result.data
172+
assert len(data) == 5
173+
134174
def test_remove_channel_members_endpoint_available(self):
135175
pn = _pubnub()
136176
remove_channel_members = pn.remove_channel_members()

0 commit comments

Comments
 (0)