import sys from datetime import datetime from typing import Any, Dict, Generic, Optional if sys.version_info < (3, 8): from typing_extensions import Protocol # pragma: no cover else: from typing import Protocol # pragma: no cover from fastapi_users.authentication.strategy.db.models import AP class AccessTokenDatabase(Protocol, Generic[AP]): """Protocol for retrieving, creating and updating access tokens from a database.""" async def get_by_token( self, token: str, max_age: Optional[datetime] = None ) -> Optional[AP]: """Get a single access token by token.""" ... # pragma: no cover async def create(self, create_dict: Dict[str, Any]) -> AP: """Create an access token.""" ... # pragma: no cover async def update(self, access_token: AP, update_dict: Dict[str, Any]) -> AP: """Update an access token.""" ... # pragma: no cover async def delete(self, access_token: AP) -> None: """Delete an access token.""" ... # pragma: no cover