Source code for cadrumo.adapters.outbound.storage.drive_pagination
"""Shared containment for Google Drive ``nextPageToken`` pagination."""from__future__importannotationsfrom....application.operator_actions.preconditionsimportno_action_precondition_verdictfrom....core.operator_action_enumsimportActionEvidenceProvenance,NoRecoveryOutcomefrom.errorsimportOutboundStorageNetworkError
[docs]defnext_drive_page_token(value:object,*,seen_tokens:set[str],action:str)->str|None:"""Validate the next Drive page token and refuse pagination cycles."""ifvalueisNoneorvalue=="":returnNoneifnotisinstance(value,str):raiseOutboundStorageNetworkError("Drive returned a non-string nextPageToken",context={"action":action,"token_type":type(value).__name__},precondition_verdict=no_action_precondition_verdict(condition_id="storage.drive.pagination.token_string",facts={"operation":action,"token_type":type(value).__name__},provenance=ActionEvidenceProvenance.RUNTIME_OBSERVATION,outcome=NoRecoveryOutcome.SAFETY,),)ifvalueinseen_tokens:raiseOutboundStorageNetworkError("Drive returned a repeated nextPageToken",context={"action":action,"page_token":value},precondition_verdict=no_action_precondition_verdict(condition_id="storage.drive.pagination.token_unique",facts={"operation":action,"token_repeated":True},provenance=ActionEvidenceProvenance.RUNTIME_OBSERVATION,outcome=NoRecoveryOutcome.SAFETY,),)seen_tokens.add(value)returnvalue