@@ -57,6 +57,10 @@ def __init__(
5757 self ._cache = cache
5858 self ._cae_cache = cae_cache
5959 self ._cache_options = kwargs .pop ("cache_persistence_options" , None )
60+ if self ._cache or self ._cae_cache :
61+ self ._custom_cache = True
62+ else :
63+ self ._custom_cache = False
6064
6165 def _get_cache (self , ** kwargs : Any ) -> TokenCache :
6266 cache = self ._cae_cache if kwargs .get ("enable_cae" ) else self ._cache
@@ -346,6 +350,21 @@ def _post(self, data: Dict, **kwargs: Any) -> HttpRequest:
346350 url = self ._get_token_url (** kwargs )
347351 return HttpRequest ("POST" , url , data = data , headers = {"Content-Type" : "application/x-www-form-urlencoded" })
348352
353+ def __getstate__ (self ) -> Dict [str , Any ]:
354+ state = self .__dict__ .copy ()
355+ # Remove the non-picklable entries
356+ if not self ._custom_cache :
357+ del state ["_cache" ]
358+ del state ["_cae_cache" ]
359+ return state
360+
361+ def __setstate__ (self , state : Dict [str , Any ]) -> None :
362+ self .__dict__ .update (state )
363+ # Re-create the unpickable entries
364+ if not self ._custom_cache :
365+ self ._cache = None
366+ self ._cae_cache = None
367+
349368
350369def _merge_claims_challenge_and_capabilities (capabilities , claims_challenge ):
351370 # Represent capabilities as {"access_token": {"xms_cc": {"values": capabilities}}}
0 commit comments