Skip to content

Commit 33973dc

Browse files
committed
Pass in caches instead of arguments.
1 parent 8ebd5bc commit 33973dc

File tree

3 files changed

+20
-15
lines changed

3 files changed

+20
-15
lines changed

jsonschema/_version.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

22
# This file is automatically generated by setup.py.
3-
__version__ = '2.3.0.post131'
4-
__sha__ = 'gfec4647'
5-
__revision__ = 'gfec4647'
3+
__version__ = '2.3.0.post133'
4+
__sha__ = 'g8ebd5bc'
5+
__revision__ = 'g8ebd5bc'

jsonschema/validators.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -233,10 +233,10 @@ class RefResolver(object):
233233
first resolution
234234
:argument dict handlers: a mapping from URI schemes to functions that
235235
should be used to retrieve them
236-
:arguments callable cache_func: a function decorator used to cache
237-
expensive calls. Should support the `functools.lru_cache` interface.
238-
:argument int cache_maxsize: number of items to store in the cache. Set
239-
this to 0 to disable caching. Defaults to 1000.
236+
:arguments functools.lru_cache urljoin_cache: a cache that will be used for
237+
caching the results of joining the resolution scope to subscopes.
238+
:arguments functools.lru_cache remote_cache: a cache that will be used for
239+
caching the results of resolved remote URLs.
240240
241241
"""
242242

@@ -247,10 +247,14 @@ def __init__(
247247
store=(),
248248
cache_remote=True,
249249
handlers=(),
250-
cache_func=lru_cache,
251-
cache_maxsize=1000,
250+
urljoin_cache=None,
251+
remote_cache=None,
252252
):
253-
# This attribute is not used, it is for backwards compatibility
253+
if urljoin_cache is None:
254+
urljoin_cache = lru_cache(1024)(urljoin)
255+
if remote_cache is None:
256+
remote_cache = lru_cache(1024)(self.resolve_from_url)
257+
254258
self.referrer = referrer
255259
self.cache_remote = cache_remote
256260
self.handlers = dict(handlers)
@@ -263,8 +267,8 @@ def __init__(
263267
self.store.update(store)
264268
self.store[base_uri] = referrer
265269

266-
self._urljoin_cache = cache_func(cache_maxsize)(urljoin)
267-
self._resolve_cache = cache_func(cache_maxsize)(self.resolve_from_url)
270+
self._urljoin_cache = urljoin_cache
271+
self._remote_cache = remote_cache
268272

269273
@classmethod
270274
def from_schema(cls, schema, *args, **kwargs):
@@ -280,7 +284,8 @@ def from_schema(cls, schema, *args, **kwargs):
280284

281285
def push_scope(self, scope):
282286
self._scopes_stack.append(
283-
self._urljoin_cache(self.resolution_scope, scope))
287+
self._urljoin_cache(self.resolution_scope, scope),
288+
)
284289

285290
def pop_scope(self):
286291
try:
@@ -328,7 +333,7 @@ def resolving(self, ref):
328333

329334
def resolve(self, ref):
330335
url = self._urljoin_cache(self.resolution_scope, ref)
331-
return url, self._resolve_cache(url)
336+
return url, self._remote_cache(url)
332337

333338
def resolve_from_url(self, url):
334339
url, fragment = urldefrag(url)

version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v2.3.0-131-gfec4647
1+
v2.3.0-133-g8ebd5bc

0 commit comments

Comments
 (0)