Skip to content

Commit 6026b7a

Browse files
committed
Comply API of StrategyEase-7.0.0.0
1 parent b52fa1c commit 6026b7a

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def main():
7373
packages=find_packages(exclude=['contrib', 'docs', 'tests']),
7474

7575
install_requires=['requests', 'six', 'apscheduler', 'lxml', 'cssselect', 'bs4', 'html5lib', 'pandas',
76-
'rqopen-client', 'tushare', 'pyyaml'],
76+
'rqopen-client', 'tushare', 'pyyaml', 'deprecation'],
7777

7878
extras_require={
7979
'dev': [],

strategyease_sdk/client.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import requests
1111
import six
1212
import tushare as ts
13+
from deprecation import deprecated
1314
from lxml import etree
1415
from pandas.compat import StringIO
1516
from requests import Request
@@ -93,6 +94,7 @@ def get_account(self, client=None, timeout=None):
9394
response = self.__send_request(request, timeout)
9495
return response.json()
9596

97+
@deprecated(details="You should use get_portfolio")
9698
def get_positions(self, client=None, media_type=MediaType.DEFAULT, timeout=None):
9799
request = Request('GET', self.__create_url(client, 'positions'))
98100
request.headers['Accept'] = media_type.value
@@ -105,6 +107,18 @@ def get_positions(self, client=None, media_type=MediaType.DEFAULT, timeout=None)
105107
return portfolio
106108
return json
107109

110+
def get_portfolio(self, client=None, media_type=MediaType.DEFAULT, timeout=None):
111+
request = Request('GET', self.__create_url(client, 'portfolios'))
112+
request.headers['Accept'] = media_type.value
113+
response = self.__send_request(request, timeout)
114+
json = response.json()
115+
if media_type == MediaType.DEFAULT:
116+
sub_accounts = pd.DataFrame(json['subAccounts']).T
117+
positions = pd.DataFrame(json['dataTable']['rows'], columns=json['dataTable']['columns'])
118+
portfolio = {'sub_accounts': sub_accounts, 'positions': positions}
119+
return portfolio
120+
return json
121+
108122
def get_orders(self, client=None, status="", timeout=None):
109123
request = Request('GET', self.__create_url(client, 'orders', status=status))
110124
response = self.__send_request(request, timeout)
@@ -135,8 +149,8 @@ def cancel_all(self, client=None, timeout=None):
135149
request = Request('DELETE', self.__create_order_url(client))
136150
self.__send_request(request, timeout)
137151

138-
def query(self, client=None, navigation=None, timeout=None):
139-
request = Request('GET', self.__create_url(client, 'reports', navigation=navigation))
152+
def query(self, client=None, type=None, navigation=None, timeout=None):
153+
request = Request('GET', self.__create_url(client, 'reports', type=type, navigation=navigation))
140154
response = self.__send_request(request, timeout)
141155
json = response.json()
142156
df = pd.DataFrame(json['dataTable']['rows'], columns=json['dataTable']['columns'])
@@ -236,7 +250,7 @@ def __create_order_url(self, client=None, order_id=None, **params):
236250
return self.__create_url(client, 'orders', order_id, **params)
237251

238252
def __create_url(self, client, resource, resource_id=None, **params):
239-
all_params = copy.deepcopy(params)
253+
all_params = dict((k, v) for k, v in params.items() if v is not None)
240254
all_params.update(client=(client or self._client))
241255
all_params.update(key=(self._key or ''))
242256
if resource_id is None:

tests/strategyease_sdk/test_client.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ def test_get_account(self):
3535
except HTTPError as e:
3636
self.fail()
3737

38-
def test_get_positions(self):
38+
def test_get_portfolios(self):
3939
try:
40-
data = self.client.get_positions(self.client_param)
40+
data = self.client.get_portfolio(self.client_param)
4141
assert_that(data['sub_accounts'], has_row(u'人民币'))
4242
assert_that(data['positions'], has_column(u'证券代码'))
4343
except HTTPError as e:
@@ -109,9 +109,16 @@ def test_cancel_all(self):
109109
except HTTPError as e:
110110
self.fail()
111111

112-
def test_query(self):
112+
def test_query_by_type(self):
113113
try:
114-
df = self.client.query(self.client_param, '查询>资金股份')
114+
df = self.client.query(self.client_param, type='FUND')
115+
assert_that(df, has_column(u'币种'))
116+
except HTTPError as e:
117+
self.fail()
118+
119+
def test_query_by_navigation(self):
120+
try:
121+
df = self.client.query(self.client_param, navigation='查询>资金股份')
115122
assert_that(df, has_column(u'证券代码'))
116123
except HTTPError as e:
117124
self.fail()

0 commit comments

Comments
 (0)