Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
hdf_archive('memo.hdf5',init,serialized=True,meta=False),
hdf_archive('memo.h5',init,serialized=False,meta=False),
hdf_archive('xxxx.hdf5',init,serialized=True,meta=True),
hdf_archive('xxxx.h5',init,serialized=False,meta=True),
# hdfdir_archive('memoq',init,serialized=False,meta=False),
hdfdir_archive('memor',init,serialized=True,meta=False),
# hdfdir_archive('memos',init,serialized=False,meta=True),
hdfdir_archive('memot',init,serialized=True,meta=True),
#FIXME: hdfdir_archive fails with serialized=False in python 3.x
]
maps = [
None,
keymap(typed=False, flat=True, sentinel=NOSENTINEL),
keymap(typed=False, flat=False, sentinel=NOSENTINEL),
keymap(typed=True, flat=False, sentinel=NOSENTINEL),
hashmap(typed=False, flat=True, sentinel=NOSENTINEL),
hashmap(typed=False, flat=False, sentinel=NOSENTINEL),
hashmap(typed=True, flat=True, sentinel=NOSENTINEL),
hashmap(typed=True, flat=False, sentinel=NOSENTINEL),
stringmap(typed=False, flat=True, sentinel=NOSENTINEL),
stringmap(typed=False, flat=False, sentinel=NOSENTINEL),
stringmap(typed=True, flat=True, sentinel=NOSENTINEL),
stringmap(typed=True, flat=False, sentinel=NOSENTINEL),
picklemap(typed=False, flat=True, sentinel=NOSENTINEL),
picklemap(typed=False, flat=False, sentinel=NOSENTINEL),
picklemap(typed=True, flat=True, sentinel=NOSENTINEL),
picklemap(typed=True, flat=False, sentinel=NOSENTINEL),
]
for mapper in maps:
#print (mapper)
func = [_test_cache(cache, mapper) for cache in archives]
assert foo.valid() == True
assert foo(10,1,2) == ('x', NULL, 'y', 1, 'z', 2)
assert foo(0,1) == ('x', NULL, 'y', 1, 'z', 2)
assert foo(0,1,3) == ('x', NULL, 'y', 1, 'z', 3)
assert foo(0,1,r=3) == ('x', NULL, 'y', 1, 'z', 2)
assert foo.valid() == False
assert foo(0,1,x=1) == ('x', NULL, 'y', 1, 'z', 2)
assert foo.valid() == False
res2 = ('x', NULL, 'y', 2, 'z', 10)
assert foo(10,y=2,z=10) == res2
assert foo.valid() == True
res1 = ('x', NULL, 'y', 1, 'z', 10)
assert foo(0,1,z=10) == res1
assert foo.valid() == True
assert foo.call() == 11
h = hashmap(algorithm='md5')
foo.register(h)
if hex(sys.hexversion) < '0x30300f0':
_hash1 = '2c8d801f4078eba873a5fb6909ab0f8d'
_hash2 = '949883b97d9fda9c8fe6bd468fe90af9'
else: # python 3.3 has hash randomization, apparently
from klepto.crypto import hash
_hash1 = hash(res1, 'md5')
_hash2 = hash(res2, 'md5')
assert foo(0,1,z=10) == _hash1
assert str(foo.keymap()) == str(h)
assert foo.key() == _hash1
assert foo(10,y=1,z=10) == _hash1
assert foo(10,y=2,z=10) == _hash2
#XXX: due to the seed, each of the 3 cases should yield the same results
maps = [
None,
keymap(typed=False, flat=True, sentinel=NOSENTINEL),
keymap(typed=False, flat=False, sentinel=NOSENTINEL),
#FIXME: keymap of (typed=True,flat=True) fails w/ dir_archive on Windows b/c
# keymap(typed=True, flat=True, sentinel=NOSENTINEL), # bad directory name?
keymap(typed=True, flat=False, sentinel=NOSENTINEL),
#keymap(typed=False, flat=True, sentinel=SENTINEL),
#keymap(typed=False, flat=False, sentinel=SENTINEL),
#keymap(typed=True, flat=True, sentinel=SENTINEL),
#keymap(typed=True, flat=False, sentinel=SENTINEL),
hashmap(typed=False, flat=True, sentinel=NOSENTINEL),
hashmap(typed=False, flat=False, sentinel=NOSENTINEL),
hashmap(typed=True, flat=True, sentinel=NOSENTINEL),
hashmap(typed=True, flat=False, sentinel=NOSENTINEL),
#hashmap(typed=False, flat=True, sentinel=SENTINEL),
#hashmap(typed=False, flat=False, sentinel=SENTINEL),
#hashmap(typed=True, flat=True, sentinel=SENTINEL),
#hashmap(typed=True, flat=False, sentinel=SENTINEL),
stringmap(typed=False, flat=True, sentinel=NOSENTINEL),
stringmap(typed=False, flat=False, sentinel=NOSENTINEL),
stringmap(typed=True, flat=True, sentinel=NOSENTINEL),
stringmap(typed=True, flat=False, sentinel=NOSENTINEL),
#stringmap(typed=False, flat=True, sentinel=SENTINEL),
#stringmap(typed=False, flat=False, sentinel=SENTINEL),
#stringmap(typed=True, flat=True, sentinel=SENTINEL),
#stringmap(typed=True, flat=False, sentinel=SENTINEL),
picklemap(typed=False, flat=True, sentinel=NOSENTINEL),
picklemap(typed=False, flat=False, sentinel=NOSENTINEL),
picklemap(typed=True, flat=True, sentinel=NOSENTINEL),
picklemap(typed=True, flat=False, sentinel=NOSENTINEL),
#!/usr/bin/env python
#
# Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
# Copyright (c) 2013-2016 California Institute of Technology.
# Copyright (c) 2016-2020 The Uncertainty Quantification Foundation.
# License: 3-clause BSD. The full license text is available at:
# - https://github.com/uqfoundation/klepto/blob/master/LICENSE
from klepto.keymaps import hashmap
from klepto import lru_cache as memoize
from klepto import inf_cache
from klepto import keygen
hasher = hashmap(algorithm='md5')
class Adder(object):
"""A simple class with a memoized method"""
@memoize(keymap=hasher, ignore=('self','**'))
def __call__(self, x, *args, **kwds):
debug = kwds.get('debug', False)
if debug:
print ('debug:', x, args, kwds)
return sum((x,)+args)
add = __call__
def test_adder():
add = Adder()
assert add(2,0) == 2
def __init__(self, maxsize=None, cache=None, keymap=None, ignore=None, tol=None, deep=False, purge=False):
#if maxsize is not None: raise ValueError('maxsize cannot be set')
maxsize = None #XXX: allow maxsize to be given but ignored ?
purge = False #XXX: allow purge to be given but ignored ?
if cache is None: cache = archive_dict()
elif type(cache) is dict: cache = archive_dict(cache)
if keymap is None: keymap = hashmap(flat=True)
if ignore is None: ignore = tuple()
if deep: rounded = deep_round
else: rounded = simple_round
#else: rounded = shallow_round #FIXME: slow
@rounded(tol)
def rounded_args(*args, **kwds):
return (args, kwds)
# set state
self.__state__ = {
'maxsize': maxsize,
'cache': cache,
'keymap': keymap,
'ignore': ignore,