Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
resolve comments
  • Loading branch information
annie-mac committed Sep 23, 2024
commit 1fc073dbd975be88f17c52a9a530ee3a97060728
Original file line number Diff line number Diff line change
Expand Up @@ -405,10 +405,11 @@ def from_initial_state(
change_feed_start_from = (
ChangeFeedStartFromInternal.from_start_time(change_feed_state_context.get("startTime")))

assert feed_range is not None
return cls(
container_link=container_link,
container_rid=collection_rid,
feed_range=feed_range,
change_feed_start_from=change_feed_start_from,
continuation=None)
if feed_range is not None:
return cls(
container_link=container_link,
container_rid=collection_rid,
feed_range=feed_range,
change_feed_start_from=change_feed_start_from,
continuation=None)
raise RuntimeError("feed_range is empty")
34 changes: 17 additions & 17 deletions sdk/cosmos/azure-cosmos/azure/cosmos/_feed_range.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,6 @@ class FeedRange(ABC):
"""Represents a single feed range in an Azure Cosmos DB SQL API container.

"""

def to_string(self) -> str:
"""
Get a json representation of the feed range.
The returned json string can be used to create a new feed range from it.

:return: A json representation of the feed range.
:rtype: str
"""

return self._to_base64_encoded_string()

@staticmethod
def from_string(json_str: str) -> 'FeedRange':
"""
Expand Down Expand Up @@ -76,14 +64,26 @@ def _to_base64_encoded_string(self) -> str:
# Convert the Base64 bytes to a string
return base64_bytes.decode('utf-8')

class FeedRangeEpk (FeedRange):
class FeedRangeEpk(FeedRange):
type_property_name = "Range"

def __init__(self, feed_range: Range) -> None:
if feed_range is None:
raise ValueError("feed_range cannot be None")

self._feed_range = feed_range
self._base64_encoded_string = None

def __str__(self) -> str:
"""Get a json representation of the feed range.
The returned json string can be used to create a new feed range from it.

:return: A json representation of the feed range.
"""
if self._base64_encoded_string is None:
self._base64_encoded_string = self._to_base64_encoded_string()

return self._base64_encoded_string

def _to_dict(self) -> Dict[str, Any]:
return {
Expand All @@ -95,7 +95,7 @@ def _to_feed_range_internal(self) -> 'FeedRangeInternal':

@classmethod
def _from_json(cls, data: Dict[str, Any]) -> 'FeedRange':
if data.get(cls.type_property_name):
feed_range = Range.ParseFromDict(data.get(cls.type_property_name))
return cls(feed_range)
raise ValueError(f"Can not parse FeedRangeEPK from the json, there is no property {cls.type_property_name}")
try:
return cls(Range.ParseFromDict(data[cls.type_property_name]))
except KeyError as e:
raise ValueError(f"Can not parse FeedRangeEPK from the json, there is no property {cls.type_property_name}") from e