Skip to content

Commit ad0b754

Browse files
committed
BUG: Fix assumption that all callables have .__name__
Callable class instances might not. The solution is generic. Fixes #93
1 parent 49aa32e commit ad0b754

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

backtesting/_util.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def _as_str(value):
2222
if name in ('Open', 'High', 'Low', 'Close', 'Volume'):
2323
return name[:1]
2424
if callable(value):
25-
name = value.__name__.replace('<lambda>', 'λ')
25+
name = getattr(value, '__name__', value.__class__.__name__).replace('<lambda>', 'λ')
2626
if len(name) > 10:
2727
name = name[:9] + '…'
2828
return name

backtesting/test/_test.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -699,13 +699,15 @@ def func():
699699
pass
700700

701701
class Class:
702-
pass
702+
def __call__(self):
703+
pass
703704

704705
self.assertEqual(_as_str('4'), '4')
705706
self.assertEqual(_as_str(4), '4')
706707
self.assertEqual(_as_str(_Indicator([1, 2], name='x')), 'x')
707708
self.assertEqual(_as_str(func), 'func')
708709
self.assertEqual(_as_str(Class), 'Class')
710+
self.assertEqual(_as_str(Class()), 'Class')
709711
self.assertEqual(_as_str(pd.Series([1, 2], name='x')), 'x')
710712
self.assertEqual(_as_str(pd.DataFrame()), 'df')
711713
self.assertEqual(_as_str(lambda x: x), 'λ')

0 commit comments

Comments
 (0)