Summary
The Full Fidelity Change Feed (AllVersionsAndDeletes) feature needs formal SME signoff confirming that the FFCF APIs are already GA-accessible in the Python SDK. Unlike the .NET SDK (which gates FFCF behind #if PREVIEW — see azure-cosmos-dotnet-v3#5814), the Python SDK exposes FFCF as regular public parameters with no preview gating.
This issue requests confirmation that the following APIs are intentionally GA and do not require additional ungating or contract changes.
FFCF APIs Already Public in Python SDK
| # |
API / Surface |
Location |
Notes |
| 1 |
mode="AllVersionsAndDeletes" parameter on query_items_change_feed() |
container.py (sync), aio/_container.py (async) |
Exposed as Literal["LatestVersion", "AllVersionsAndDeletes"] — core entry point for FFCF |
| 2 |
Change feed item response structure (current, previous, metadata dict keys) |
Returned from query_items_change_feed() when mode="AllVersionsAndDeletes" |
No typed wrapper class (unlike .NET's ChangeFeedItem<T>) — items are raw dicts |
| 3 |
Change feed metadata (operationType, lsn, crts, previousLsn) |
Embedded in response dict under metadata key |
No typed model (unlike .NET's ChangeFeedMetadata) |
| 4 |
Operation types: create, replace, delete |
String values in metadata["operationType"] |
No enum class (unlike .NET's ChangeFeedOperationType) |
| 5 |
change_feed_policy parameter on create_container() / replace_container() |
database.py, aio/_database.py |
Passed as dict {"retentionDuration": N} — equivalent to .NET's ChangeFeedPolicy |
| 6 |
feed_range parameter with change feed |
container.py query_items_change_feed(feed_range=...) |
Enables scoped FFCF reads |
| 7 |
Internal state machine (ChangeFeedStateV2 with mode handling) |
_change_feed/change_feed_state.py |
Internal (_ prefixed) — sets FullFidelityFeedHeaderValue and wire format headers |
Validation Logic
The FFCF mode validation is in _change_feed/change_feed_utils.py:
AllVersionsAndDeletes mode cannot be used with partition_key_range_id
AllVersionsAndDeletes mode requires start_time="Now" or continuation
is_start_from_beginning must be False with FFCF
When Was This Added?
Action Requested
Related
Summary
The Full Fidelity Change Feed (AllVersionsAndDeletes) feature needs formal SME signoff confirming that the FFCF APIs are already GA-accessible in the Python SDK. Unlike the .NET SDK (which gates FFCF behind
#if PREVIEW— see azure-cosmos-dotnet-v3#5814), the Python SDK exposes FFCF as regular public parameters with no preview gating.This issue requests confirmation that the following APIs are intentionally GA and do not require additional ungating or contract changes.
FFCF APIs Already Public in Python SDK
mode="AllVersionsAndDeletes"parameter onquery_items_change_feed()Literal["LatestVersion", "AllVersionsAndDeletes"]— core entry point for FFCFcurrent,previous,metadatadict keys)query_items_change_feed()whenmode="AllVersionsAndDeletes"ChangeFeedItem<T>) — items are raw dictsoperationType,lsn,crts,previousLsn)metadatakeyChangeFeedMetadata)create,replace,deletemetadata["operationType"]ChangeFeedOperationType)change_feed_policyparameter oncreate_container()/replace_container(){"retentionDuration": N}— equivalent to .NET'sChangeFeedPolicyfeed_rangeparameter with change feedquery_items_change_feed(feed_range=...)ChangeFeedStateV2with mode handling)_prefixed) — setsFullFidelityFeedHeaderValueand wire format headersValidation Logic
The FFCF mode validation is in _change_feed/change_feed_utils.py:
AllVersionsAndDeletesmode cannot be used withpartition_key_range_idAllVersionsAndDeletesmode requiresstart_time="Now"orcontinuationis_start_from_beginningmust beFalsewith FFCFWhen Was This Added?
Action Requested
ChangeFeedItem,ChangeFeedMetadata,ChangeFeedOperationType) should be added for parity with .NET, or if raw dicts are the intended GA contractRelated