11import time
2- from datetime import datetime , timedelta
2+ from datetime import datetime
33from warnings import warn
44
55import requests
66from pandas import DataFrame
77
88from pandas_datareader ._utils import SymbolWarning
99from pandas_datareader .base import _BaseReader
10+ import pandas as pd
1011
1112
1213class MorningstarDailyReader (_BaseReader ):
@@ -149,13 +150,9 @@ def _dl_mult_symbols(self, symbols):
149150 return dfx
150151
151152 @staticmethod
152- def _convert_index2date (enddate , indexvals ):
153- i = 0
154- while i < len (indexvals ):
155- days = indexvals [len (indexvals ) - 1 ] - indexvals [i ]
156- d = enddate - timedelta (days = days )
157- i += 1
158- yield d .strftime ("%Y-%m-%d" )
153+ def _convert_index2date (indexvals ):
154+ base = pd .to_datetime ('1900-1-1' )
155+ return [base + pd .to_timedelta (iv , unit = 'd' ) for iv in indexvals ]
159156
160157 def _restruct_json (self , symbol , jsondata ):
161158 if jsondata is None :
@@ -166,11 +163,11 @@ def _restruct_json(self, symbol, jsondata):
166163 dateidx = jsondata ["PriceDataList" ][0 ]["DateIndexs" ]
167164 volumes = jsondata ["VolumeList" ]["Datapoints" ]
168165
169- date_ = self ._convert_index2date (enddate = self . end , indexvals = dateidx )
166+ dates = self ._convert_index2date (indexvals = dateidx )
170167 barss = []
171168 for p in range (len (pricedata )):
172169 bar = pricedata [p ]
173- d = next ( date_ )
170+ d = dates [ p ]
174171 bardict = {
175172 "Symbol" : symbol , "Date" : d , "Close" : bar [0 ], "High" : bar [1 ],
176173 "Low" : bar [2 ], "Open" : bar [3 ]
@@ -180,8 +177,8 @@ def _restruct_json(self, symbol, jsondata):
180177 else :
181178 events = []
182179 for x in divdata :
183- delta = (datetime .strptime (x ["Date" ], "%Y-%m-%d" ) -
184- datetime . strptime ( d , "%Y-%m-%d" ))
180+ delta = (datetime .strptime (x ["Date" ], "%Y-%m-%d" )
181+ - d . to_pydatetime ( ))
185182 if delta .days == 0 :
186183 events .append (x )
187184 for e in events :
0 commit comments