def__init__(self,secret_key:str,expired_in:int=0)->None:"""Initialize the serializer with a secret key and an optional expiration time."""self.ser=URLSafeTimedSerializer(secret_key)self.expired_in=expired_in
defdecode(self,token:str)->tuple[Optional[dict[str,Any]],Optional[str]]:iftokenisNone:returnNone,"NoTokenSpecified"try:ifself.expired_in==0:decoded_obj=self.ser.loads(token)else:decoded_obj=self.ser.loads(token,max_age=self.expired_in)exceptSignatureExpired:returnNone,"SignatureExpired"exceptBadTimeSignature:returnNone,"InvalidSignature"exceptException:returnNone,"BadSignature"# Catch-all for other signature errorsreturndecoded_obj,None