Skip to content

Commit 8dea613

Browse files
committed
Some fixes for flake8
1 parent 92b9482 commit 8dea613

File tree

3 files changed

+37
-21
lines changed

3 files changed

+37
-21
lines changed

pandas_datareader/data.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,11 @@ def get_quote_google(*args, **kwargs):
6060
def get_data_quandl(*args, **kwargs):
6161
return QuandlReader(*args, **kwargs).read()
6262

63+
6364
def get_data_moex(*args, **kwargs):
6465
return MoexReader(*args, **kwargs).read()
6566

67+
6668
def DataReader(name, data_source=None, start=None, end=None,
6769
retry_count=3, pause=0.001, session=None, access_key=None):
6870
"""
@@ -175,8 +177,8 @@ def DataReader(name, data_source=None, start=None, end=None,
175177
session=session).read()
176178
elif data_source == "moex":
177179
return MoexReader(symbols=name, start=start, end=end,
178-
retry_count=retry_count, pause=pause,
179-
session=session).read()
180+
retry_count=retry_count, pause=pause,
181+
session=session).read()
180182
else:
181183
msg = "data_source=%r is not implemented" % data_source
182184
raise NotImplementedError(msg)

pandas_datareader/moex.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
# flake8: noqa
2+
13
from pandas_datareader.base import _DailyBaseReader
24
from pandas import read_csv, compat
3-
from pandas.compat import StringIO, bytes_to_str
5+
from pandas.compat import StringIO
46
import datetime as dt
57

8+
69
class MoexReader(_DailyBaseReader):
710

811
"""
@@ -40,14 +43,15 @@ def __init__(self, *args, **kwargs):
4043
raise ValueError("Support for multiple symbols is not yet implemented.")
4144

4245
__url_metadata = "https://iss.moex.com/iss/securities/{symbol}.csv"
43-
__url_data = "https://iss.moex.com/iss/history/engines/{engine}/markets/{market}/securities/{symbol}.csv"
46+
__url_data = "https://iss.moex.com/iss/history/engines/{engine}/" \
47+
"markets/{market}/securities/{symbol}.csv"
4448

4549
@property
4650
def url(self):
4751
return self.__url_data.format(
48-
engine = self.__engine,
49-
market = self.__market,
50-
symbol = self.symbols
52+
engine=self.__engine,
53+
market=self.__market,
54+
symbol=self.symbols
5155
)
5256

5357
def _get_params(self, start):
@@ -70,7 +74,9 @@ def _get_params(self, start):
7074

7175
def _get_metadata(self):
7276
""" get a market and an engine for a given symbol """
73-
response = self._get_response(self.__url_metadata.format(symbol=self.symbols))
77+
response = self._get_response(
78+
self.__url_metadata.format(symbol=self.symbols)
79+
)
7480
text = self._sanitize_response(response)
7581
if len(text) == 0:
7682
service = self.__class__.__name__
@@ -80,34 +86,39 @@ def _get_metadata(self):
8086
text = text.decode('windows-1251')
8187
else:
8288
text = text
83-
89+
8490
header_str = 'secid;boardid;'
8591
get_data = False
8692
for s in text.splitlines():
8793
if s.startswith(header_str):
8894
get_data = True
8995
continue
90-
if get_data and s!='':
96+
if get_data and s != '':
9197
fields = s.split(';')
9298
return fields[5], fields[7]
9399
service = self.__class__.__name__
94-
raise IOError("{} request returned no metadata"
95-
": {}\nTypo in security symbol `{}`?".format(service, self.__url_metadata.format(symbol=self.symbols), self.symbols))
100+
raise IOError("{} request returned no metadata: {}\n"
101+
"Typo in security symbol `{}`?".format(
102+
service,
103+
self.__url_metadata.format(symbol=self.symbols),
104+
self.symbols
105+
)
106+
)
96107

97108
def read(self):
98109
""" read data """
99110
try:
100111
self.__market, self.__engine = self._get_metadata()
101112

102-
end = self.end.strftime('%Y-%m-%d')
103113
out_list = []
104114
date_column = None
105-
while True: # read in loop with small date intervals
106-
if len(out_list)>0:
115+
while True: # read in loop with small date intervals
116+
if len(out_list) > 0:
107117
if date_column is None:
108118
date_column = out_list[0].split(';').index('TRADEDATE')
109119

110-
start_str = out_list[-1].split(';', 4)[date_column] # get the last downloaded date
120+
# get the last downloaded date
121+
start_str = out_list[-1].split(';', 4)[date_column]
111122
start = dt.datetime.strptime(start_str, '%Y-%m-%d').date()
112123
else:
113124
start_str = self.start.strftime('%Y-%m-%d')
@@ -117,15 +128,16 @@ def read(self):
117128
break
118129

119130
params = self._get_params(start_str)
120-
strings_out = self._read_url_as_String(self.url, params).splitlines()[2:]
131+
strings_out = self._read_url_as_String(self.url, params) \
132+
.splitlines()[2:]
121133
strings_out = list(filter(lambda x: x.strip(), strings_out))
122134

123135
if len(out_list) == 0:
124136
out_list = strings_out
125137
if len(strings_out) < 101:
126138
break
127139
else:
128-
out_list += strings_out[1:] # remove CSV head line
140+
out_list += strings_out[1:] # remove CSV head line
129141
if len(strings_out) < 100:
130142
break
131143
str_io = StringIO('\r\n'.join(out_list))

pandas_datareader/tests/test_moex.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
import os
1+
# noqa
22
import pytest
33

44
from requests.exceptions import HTTPError
5-
import pandas_datareader as pdr
65
import pandas_datareader.data as web
76

87
class TestMoex(object):
98
def test_moex_datareader(self):
109
try:
11-
df = web.DataReader("USD000UTSTOM", 'moex', start="2017-07-01", end="2017-07-31")
10+
df = web.DataReader("USD000UTSTOM",
11+
"moex",
12+
start="2017-07-01",
13+
end="2017-07-31")
1214
assert 'SECID' in df.columns
1315
except HTTPError as e:
1416
pytest.skip(e)

0 commit comments

Comments
 (0)