Skip to content

Commit e30c640

Browse files
xinlian12annie-mac
andauthored
resolveAPIReviewComments (Azure#38396)
* resolve API comments * remove args parameter from query_items_change_feed in aio package --------- Co-authored-by: annie-mac <[email protected]>
1 parent d2cd610 commit e30c640

File tree

7 files changed

+44
-29
lines changed

7 files changed

+44
-29
lines changed

sdk/cosmos/azure-cosmos/azure/cosmos/aio/_container.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,6 @@ def query_items_change_feed(
614614
@distributed_trace
615615
def query_items_change_feed( # pylint: disable=unused-argument
616616
self,
617-
*args: Any,
618617
**kwargs: Any
619618
) -> AsyncItemPaged[Dict[str, Any]]:
620619

@@ -636,7 +635,6 @@ def query_items_change_feed( # pylint: disable=unused-argument
636635
request. Once the user has reached their provisioned throughput, low priority requests are throttled
637636
before high priority requests start getting throttled. Feature must first be enabled at the account level.
638637
:keyword Callable response_hook: A callable invoked with the response metadata.
639-
:param Any args: args
640638
:returns: An AsyncItemPaged of items (dicts).
641639
:rtype: AsyncItemPaged[Dict[str, Any]]
642640
"""
@@ -1292,10 +1290,11 @@ async def execute_item_batch(
12921290
return await self.client_connection.Batch(
12931291
collection_link=self.container_link, batch_operations=batch_operations, options=request_options, **kwargs)
12941292

1295-
async def read_feed_ranges(
1293+
@distributed_trace
1294+
def read_feed_ranges(
12961295
self,
12971296
*,
1298-
force_refresh: Optional[bool] = False,
1297+
force_refresh: bool = False,
12991298
**kwargs: Any
13001299
) -> AsyncIterable[Dict[str, Any]]:
13011300
""" Obtains a list of feed ranges that can be used to parallelize feed operations.
@@ -1313,17 +1312,26 @@ async def read_feed_ranges(
13131312
if force_refresh is True:
13141313
self.client_connection.refresh_routing_map_provider()
13151314

1316-
partition_key_ranges =\
1317-
await self.client_connection._routing_map_provider.get_overlapping_ranges(
1318-
self.container_link,
1319-
# default to full range
1320-
[Range("", "FF", True, False)],
1321-
**kwargs)
1315+
async def get_next(continuation_token:str) -> List[Dict[str, Any]]: # pylint: disable=unused-argument
1316+
partition_key_ranges = \
1317+
await self.client_connection._routing_map_provider.get_overlapping_ranges( # pylint: disable=protected-access
1318+
self.container_link,
1319+
# default to full range
1320+
[Range("", "FF", True, False)],
1321+
**kwargs)
1322+
1323+
feed_ranges = [FeedRangeInternalEpk(Range.PartitionKeyRangeToRange(partitionKeyRange)).to_dict()
1324+
for partitionKeyRange in partition_key_ranges]
13221325

1323-
feed_ranges = [FeedRangeInternalEpk(Range.PartitionKeyRangeToRange(partitionKeyRange)).to_dict()
1324-
for partitionKeyRange in partition_key_ranges]
1326+
return feed_ranges
13251327

1326-
return AsyncList(feed_ranges)
1328+
async def extract_data(feed_ranges_response: List[Dict[str, Any]]):
1329+
return None, AsyncList(feed_ranges_response)
1330+
1331+
return AsyncItemPaged(
1332+
get_next,
1333+
extract_data
1334+
)
13271335

13281336
async def get_latest_session_token(
13291337
self,

sdk/cosmos/azure-cosmos/azure/cosmos/container.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,10 +1362,11 @@ def delete_all_items_by_partition_key(
13621362
self.client_connection.DeleteAllItemsByPartitionKey(
13631363
collection_link=self.container_link, options=request_options, **kwargs)
13641364

1365+
@distributed_trace
13651366
def read_feed_ranges(
13661367
self,
13671368
*,
1368-
force_refresh: Optional[bool] = False,
1369+
force_refresh: bool = False,
13691370
**kwargs: Any) -> Iterable[Dict[str, Any]]:
13701371

13711372
""" Obtains a list of feed ranges that can be used to parallelize feed operations.
@@ -1383,14 +1384,22 @@ def read_feed_ranges(
13831384
if force_refresh is True:
13841385
self.client_connection.refresh_routing_map_provider()
13851386

1386-
partition_key_ranges =\
1387-
self.client_connection._routing_map_provider.get_overlapping_ranges(
1388-
self.container_link,
1389-
[Range("", "FF", True, False)], # default to full range
1390-
**kwargs)
1387+
def get_next(continuation_token:str) -> List[Dict[str, Any]]: # pylint: disable=unused-argument
1388+
partition_key_ranges = \
1389+
self.client_connection._routing_map_provider.get_overlapping_ranges( # pylint: disable=protected-access
1390+
self.container_link,
1391+
[Range("", "FF", True, False)], # default to full range
1392+
**kwargs)
1393+
1394+
feed_ranges = [FeedRangeInternalEpk(Range.PartitionKeyRangeToRange(partitionKeyRange)).to_dict()
1395+
for partitionKeyRange in partition_key_ranges]
1396+
1397+
return feed_ranges
1398+
1399+
def extract_data(feed_ranges_response: List[Dict[str, Any]]):
1400+
return None, iter(feed_ranges_response)
13911401

1392-
return [FeedRangeInternalEpk(Range.PartitionKeyRangeToRange(partitionKeyRange)).to_dict()
1393-
for partitionKeyRange in partition_key_ranges]
1402+
return ItemPaged(get_next, extract_data)
13941403

13951404
def get_latest_session_token(
13961405
self,

sdk/cosmos/azure-cosmos/samples/examples.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,6 @@
286286

287287
# Query a sorted list of items that were changed for one feed range
288288
# [START query_items_change_feed_from_beginning]
289-
feed_ranges = container.read_feed_ranges()
290289
for item in container.query_items_change_feed(feed_range=feed_ranges[0], start_time="Beginning"):
291290
print(json.dumps(item, indent=True))
292291
# [END query_items_change_feed_from_beginning]

sdk/cosmos/azure-cosmos/samples/examples_async.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ async def examples_async():
265265

266266
# Get the feed ranges list from container.
267267
# [START read_feed_ranges]
268-
feed_ranges = [feed_range async for feed_range in await container.read_feed_ranges()]
268+
feed_ranges = [feed_range async for feed_range in container.read_feed_ranges()]
269269
# [END read_feed_ranges]
270270

271271
# Get a feed range from a partition key.
@@ -296,7 +296,6 @@ async def examples_async():
296296
# The asynchronous client returns asynchronous iterators for its query methods;
297297
# as such, we iterate over it by using an async for loop
298298
# [START query_items_change_feed_from_beginning]
299-
feed_ranges = [feed_range async for feed_range in await container.read_feed_ranges()]
300299
async for item in container.query_items_change_feed(feed_range=feed_ranges[0], start_time="Beginning"):
301300
print(json.dumps(item, indent=True))
302301
# [END query_items_change_feed_from_beginning]

sdk/cosmos/azure-cosmos/samples/session_token_management_async.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ async def storing_session_tokens_container_feed_ranges(container):
8989
# to store session tokens in a cache by feed range from the partition key.
9090
feed_ranges_and_session_tokens = []
9191
previous_session_token = ""
92-
feed_ranges = [feed_range async for feed_range in await container.read_feed_ranges()]
92+
feed_ranges = [feed_range async for feed_range in container.read_feed_ranges()]
9393

9494
# populating cache with session tokens
9595
for i in range(5):

sdk/cosmos/azure-cosmos/test/test_change_feed_async.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class TestChangeFeedAsync:
4242
async def test_get_feed_ranges(self, setup):
4343
created_collection = await setup["created_db"].create_container("get_feed_ranges_" + str(uuid.uuid4()),
4444
PartitionKey(path="/pk"))
45-
result = [feed_range async for feed_range in await created_collection.read_feed_ranges()]
45+
result = [feed_range async for feed_range in created_collection.read_feed_ranges()]
4646
assert len(result) == 1
4747

4848
@pytest.mark.parametrize("change_feed_filter_param", ["partitionKey", "partitionKeyRangeId", "feedRange"])
@@ -57,7 +57,7 @@ async def test_query_change_feed_with_different_filter_async(self, change_feed_f
5757
elif change_feed_filter_param == "partitionKeyRangeId":
5858
filter_param = {"partition_key_range_id": "0"}
5959
elif change_feed_filter_param == "feedRange":
60-
feed_ranges = [feed_range async for feed_range in await created_collection.read_feed_ranges()]
60+
feed_ranges = [feed_range async for feed_range in created_collection.read_feed_ranges()]
6161
assert len(feed_ranges) == 1
6262
filter_param = {"feed_range": feed_ranges[0]}
6363
else:
@@ -69,7 +69,7 @@ async def test_query_change_feed_with_different_filter_async(self, change_feed_f
6969
assert len(iter_list) == 0
7070

7171
# Read change feed from current should return an empty list
72-
query_iterable = created_collection.query_items_change_feed(filter_param)
72+
query_iterable = created_collection.query_items_change_feed(**filter_param)
7373
iter_list = [item async for item in query_iterable]
7474
assert len(iter_list) == 0
7575
if 'Etag' in created_collection.client_connection.last_response_headers:

sdk/cosmos/azure-cosmos/test/test_latest_session_token_async.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ async def create_items_logical_pk(container, target_pk_range, previous_session_t
190190
@staticmethod
191191
async def create_items_physical_pk(container, pk_feed_range, previous_session_token, feed_ranges_and_session_tokens, hpk=False):
192192
target_session_token = ""
193-
container_feed_ranges = [feed_range async for feed_range in await container.read_feed_ranges()]
193+
container_feed_ranges = [feed_range async for feed_range in container.read_feed_ranges()]
194194
target_feed_range = None
195195
for feed_range in container_feed_ranges:
196196
if await container.is_feed_range_subset(feed_range, pk_feed_range):

0 commit comments

Comments
 (0)