diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/analytics/basket_index.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/python/analytics/basket_index.py b/python/analytics/basket_index.py index 4d5ecb40..e4554d6f 100644 --- a/python/analytics/basket_index.py +++ b/python/analytics/basket_index.py @@ -4,6 +4,7 @@ from .utils import tenor_t from dateutil.relativedelta import relativedelta from functools import partial from pickle import dumps, loads +from pandas.util import hash_pandas_object from pyisda.credit_index import CreditIndex from typing import List from yieldcurve import get_curve @@ -75,13 +76,20 @@ class BasketIndex(CreditIndex): def __hash__(self): def aux(v): if isinstance(v, pd.DataFrame): - return hash_pandas_object(v) + return hash_pandas_object(v).sum() elif isinstance(v, list): return hash(tuple(v)) + elif type(v) is np.ndarray: + return hash(v.tobytes()) else: return hash(v) - hash(CreditIndex.__hash__(self), - hash(frozenset([(k, aux(v)) for k, v in dirs(self)]))) + ignore = set(['_Z', '_w', '_skew']) + for k, v in vars(self).items(): + if k not in ignore: + print(k, aux(v)) + return hash((CreditIndex.__hash__(self), + hash(frozenset([(k, aux(v)) for k, v in vars(self).items() \ + if k not in ignore])))) def _query_version(self, i): for lastdate, *data in self._version: |
