1010import requests
1111import six
1212import tushare as ts
13+ from deprecation import deprecated
1314from lxml import etree
1415from pandas .compat import StringIO
1516from 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 :
0 commit comments