@@ -248,44 +248,44 @@ def get_project_context(self) -> Dict:
248248 return context
249249
250250 def resolve_context (self , iri : str , local_only : Optional [bool ] = False ) -> Dict :
251- if iri in self .context_cache :
252- return self .context_cache [iri ]
253-
254251 context_to_resolve = (
255252 self .store_local_context if iri == self .store_context else iri
256253 )
257- url = "/" .join ((self .url_resolver , "_" , quote_plus (context_to_resolve )))
258254
259- try :
260- response = requests .get (url , headers = self .headers )
261- response .raise_for_status ()
262- resource = response .json ()
263- except Exception as e :
264- if not local_only :
265- try :
266- context = Context (context_to_resolve )
267- except URLError :
268- raise ValueError (f"{ context_to_resolve } is not resolvable" )
255+ if context_to_resolve not in self .context_cache :
256+
257+ url = "/" .join ((self .url_resolver , "_" , quote_plus (context_to_resolve )))
258+
259+ try :
260+ response = requests .get (url , headers = self .headers )
261+ response .raise_for_status ()
262+ resource = response .json ()
263+ except Exception as e :
264+ if not local_only :
265+ try :
266+ context = Context (context_to_resolve )
267+ except URLError :
268+ raise ValueError (f"{ context_to_resolve } is not resolvable" )
269+ else :
270+ document = context .document ["@context" ]
269271 else :
270- document = context . document [ "@context" ]
272+ raise ValueError ( f" { context_to_resolve } is not resolvable" )
271273 else :
272- raise ValueError ( f" { context_to_resolve } is not resolvable" )
273- else :
274- # Make sure context is not deprecated
275- if '_deprecated' in resource and resource [ '_deprecated' ]:
276- raise ConfigurationError ( f"Context { context_to_resolve } exists but was deprecated" )
277- document = json .loads (json .dumps (resource ["@context" ]))
274+ # Make sure context is not deprecated
275+ if '_deprecated' in resource and resource [ '_deprecated' ] :
276+ raise ConfigurationError (
277+ f"Context { context_to_resolve } exists but was deprecated"
278+ )
279+ document = json .loads (json .dumps (resource ["@context" ]))
278280
279- if isinstance (document , list ):
280- if self .store_context in document :
281- document .remove (self .store_context )
282- if self .store_local_context in document :
283- document .remove (self .store_local_context )
281+ if isinstance (document , list ):
282+ if self .store_context in document :
283+ document .remove (self .store_context )
284+ if self .store_local_context in document :
285+ document .remove (self .store_local_context )
284286
285- self .context_cache [context_to_resolve ] = document
287+ self .context_cache [context_to_resolve ] = document
286288
287- # TODO context_to_resolve may be different from iri. Why is having it in the cache
288- # already leading to different outcome? (see first 2 lines of function)
289289 return self .context_cache [context_to_resolve ]
290290
291291 def batch_request (
0 commit comments