Skip to content

Commit 6cffdf1

Browse files
Merge pull request #29 from DanielGoldfarb/master
Bug Fix Issue#28, fix yahoo style, some code cleanup
2 parents 0b613fc + a3faa0d commit 6cffdf1

File tree

6 files changed

+544
-125
lines changed

6 files changed

+544
-125
lines changed

examples/scratch_pad/debug_zero_volume_crash_issue28.ipynb

Lines changed: 512 additions & 0 deletions
Large diffs are not rendered by default.

src/mplfinance/_arg_validators.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,12 @@ def _validate_vkwargs_dict(vkwargs):
6060
# Check that we didn't make a typo in any of the things
6161
# that should be the same for all vkwargs dict items:
6262
for key, value in vkwargs.items():
63-
if len(value) != 3:
64-
raise ValueError('Items != 3 in valid kwarg table, for kwarg "'+key+'"')
63+
if len(value) != 2:
64+
raise ValueError('Items != 2 in valid kwarg table, for kwarg "'+key+'"')
6565
if 'Default' not in value:
6666
raise ValueError('Missing "Default" value for kwarg "'+key+'"')
67-
if 'Implemented' not in value:
68-
raise ValueError('Missing "Implemented" flag for kwarg "'+key+'"')
6967
if 'Validator' not in value:
7068
raise ValueError('Missing "Validator" function for kwarg "'+key+'"')
71-
if value['Implemented'] not in [True,False]:
72-
raise ValueError('"Implemented" flag NOT True or False for kwarg "'+key+'"')
7369

7470
def _process_kwargs(kwargs, vkwargs):
7571
'''
@@ -80,7 +76,7 @@ def _process_kwargs(kwargs, vkwargs):
8076
as kwargs and return the configuration dictionary.
8177
'''
8278
# initialize configuration from valid_kwargs_table:
83-
config = {}
79+
config = {}
8480
for key, value in vkwargs.items():
8581
config[key] = value['Default']
8682

@@ -89,18 +85,16 @@ def _process_kwargs(kwargs, vkwargs):
8985
for key in kwargs.keys():
9086
if key not in vkwargs:
9187
raise KeyError('Unrecognized kwarg="'+str(key)+'"')
92-
elif not vkwargs[key]['Implemented']:
93-
raise NotImplementedError('kwarg "'+key+'" is NOT YET implemented.')
9488
else:
9589
value = kwargs[key]
9690
try:
9791
valid = vkwargs[key]['Validator'](value)
9892
except Exception as ex:
99-
raise ValueError('kwarg "'+key+'" with invalid value: "'+str(value)+'"') from ex
93+
raise ValueError('kwarg "'+key+'" validator raised exception to value: "'+str(value)+'"') from ex
10094
if not valid:
10195
import inspect
10296
v = inspect.getsource(vkwargs[key]['Validator']).strip()
103-
raise ValueError('kwarg "'+key+'" with invalid value: "'+str(value)+'"\n '+v)
97+
raise ValueError('kwarg "'+key+'" validator returned False for value: "'+str(value)+'"\n '+v)
10498

10599
# ---------------------------------------------------------------
106100
# At this point in the loop, if we have not raised an exception,

src/mplfinance/_styledata/yahoo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
'marketcolors' : {'candle': {'up': '#00b060', 'down': '#fe3032'},
33
'edge' : {'up': '#00b060', 'down': '#fe3032'},
44
'wick' : {'up': '#606060', 'down': '#606060'},
5-
'ohlc' : {'up': 'k', 'down': 'k'},
5+
'ohlc' : {'up': '#00b060', 'down': '#fe3032'},
66
'volume': {'up': '#4dc790', 'down': '#fd6b6c'},
77
'vcedge': {'up': '#1f77b4', 'down': '#1f77b4'},
88
'vcdopcod' : True,

src/mplfinance/_styles.py

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -56,51 +56,39 @@ def _apply_mpfstyle(style):
5656
def _valid_make_mpf_style_kwargs():
5757
vkwargs = {
5858
'base_mpf_style': { 'Default' : None,
59-
'Implemented' : True,
6059
'Validator' : lambda value: value in _styles.keys() },
6160

6261
'base_mpl_style': { 'Default' : None,
63-
'Implemented' : True,
6462
'Validator' : lambda value: isinstance(value,str) }, # and is in plt.style.available
6563

6664
'marketcolors' : { 'Default' : None, #
67-
'Implemented' : True,
6865
'Validator' : lambda value: isinstance(value,dict) },
6966

7067
'mavcolors' : { 'Default' : None,
71-
'Implemented' : True,
7268
'Validator' : lambda value: isinstance(value,list) }, # TODO: all([mcolors.is_color_like(v) for v in value.values()])
7369

7470
'facecolor' : { 'Default' : None,
75-
'Implemented' : True,
7671
'Validator' : lambda value: isinstance(value,str) },
7772

7873
'edgecolor' : { 'Default' : None,
79-
'Implemented' : True,
8074
'Validator' : lambda value: isinstance(value,str) },
8175

8276
'figcolor' : { 'Default' : None,
83-
'Implemented' : True,
8477
'Validator' : lambda value: isinstance(value,str) },
8578

8679
'gridcolor' : { 'Default' : None,
87-
'Implemented' : True,
8880
'Validator' : lambda value: isinstance(value,str) },
8981

9082
'gridstyle' : { 'Default' : None,
91-
'Implemented' : True,
9283
'Validator' : lambda value: isinstance(value,str) },
9384

9485
'gridaxis' : { 'Default' : None,
95-
'Implemented' : True,
9686
'Validator' : lambda value: value in [ 'vertical'[0:len(value)], 'horizontal'[0:len(value)], 'both'[0:len(value)] ] },
9787

9888
'y_on_right' : { 'Default' : None,
99-
'Implemented' : True,
10089
'Validator' : lambda value: isinstance(value,bool) },
10190

10291
'rc' : { 'Default' : None,
103-
'Implemented' : True,
10492
'Validator' : lambda value: isinstance(value,dict) },
10593

10694
}
@@ -137,46 +125,37 @@ def _valid_mpf_color_spec(value):
137125
def _valid_make_marketcolors_kwargs():
138126
vkwargs = {
139127
'up' : { 'Default' : None,
140-
'Implemented' : True,
141128
'Validator' : lambda value: mcolors.is_color_like(value) },
142129

143130
'down' : { 'Default' : None,
144-
'Implemented' : True,
145131
'Validator' : lambda value: mcolors.is_color_like(value) },
146132

147133
'alpha' : { 'Default' : None,
148-
'Implemented' : True,
149134
'Validator' : lambda value: ( isinstance(value,float) and
150135
0.0 <= value and 1.0 >= value ) },
151136

152137
'edge' : { 'Default' : None,
153-
'Implemented' : True,
154138
'Validator' : lambda value: _valid_mpf_color_spec(value) },
155139

156140
'wick' : { 'Default' : None,
157-
'Implemented' : True,
158141
'Validator' : lambda value: isinstance(value,dict)
159142
or isinstance(value,str)
160143
or mcolors.is_color_like(value) },
161144

162145
'ohlc' : { 'Default' : None,
163-
'Implemented' : True,
164146
'Validator' : lambda value: isinstance(value,dict)
165147
or isinstance(value,str)
166148
or mcolors.is_color_like(value) },
167149

168150
'volume' : { 'Default' : None,
169-
'Implemented' : True,
170151
'Validator' : lambda value: isinstance(value,dict)
171152
or isinstance(value,str)
172153
or mcolors.is_color_like(value) },
173154

174155
'inherit' : { 'Default' : False,
175-
'Implemented' : True,
176156
'Validator' : lambda value: isinstance(value,bool) },
177157

178158
'base_mpf_style': { 'Default' : None,
179-
'Implemented' : True,
180159
'Validator' : lambda value: isinstance(value,str) },
181160
}
182161
_validate_vkwargs_dict(vkwargs)

src/mplfinance/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version_info = (0, 12, 3, 'alpha', 0)
1+
version_info = (0, 12, 3, 'alpha', 1)
22

33
_specifier_ = {'alpha': 'a', 'beta': 'b', 'candidate': 'rc', 'final': ''}
44

0 commit comments

Comments
 (0)