
    6iJ                         d Z ddlmc mZ ddlZddlZddlZddl	m
c mZ ddlmc mZ  G d de          Z G d de          ZdS )u[   
返回数据接口
@author: baostock.com
@group : baostock.com
@contact: baostock@163.com
    Nc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )
ResultDatac                    t           j        | _        d| _        d| _        d| _        d| _        t           j        | _        d| _	        d| _
        t           j        | _        d| _        d| _        d| _        g | _        d| _        d| _        d| _        d| _        g | _        d| _        d| _        d| _        d| _        d| _        d| _        dS )u   初始化方法r       N)consBAOSTOCK_CLIENT_VERSIONversionmsg_typemsg_body_lengthmethoduser_idBSERR_NO_LOGIN
error_code	error_msgcur_page_numBAOSTOCK_PER_PAGE_COUNTper_page_countcur_row_numcode	code_namefields
start_dateend_date	frequency
adjustflagdatamsg_bodyyearyearTypequarterdaydateselfs    B/usr/local/lib/python3.11/dist-packages/baostock/data/resultset.py__init__zResultData.__init__   s     3  -":						    c                    t          | j                  dk    rdS | j        t          | j                  k     rdS | j                            t
          j                  }| j                                        r*t          | j                  dz   }t          |          |d<   nt          d           dS t
          j                            |          }t          j        | j        t          |                    }||z   }t!          j        t%          |d                    }t'          j        |t
          j        z   t          |          z             }||                                d
k    rdS |dt
          j                 }|t
          j        d         }|                    t
          j                  }|                    t
          j                  }	|d         | _        |	d         | _        |	d         | _        t
          j        | j        k    rr|	d         | _        |	d         | _        |	d         | _        |	d         | _        |                     |	d                    d| _        t          | j                  dk    rdS dS dS )u    判断是否还有后续数据
        :return: 有数据时返回True，当前页没有数据时向服务器请求下一页；没有数据时返回False
        r   FTr      u0   当前页面编号不正确，请检查后再试zutf-8)encodingNr               )lenr   r   r   splitr   MESSAGE_SPLITr   isdigitintstrprintjoin	msgheaderto_message_headerr   zlibcrc32bytessocksend_msgstripMESSAGE_HEADER_LENGTHr   r   r   BSERR_SUCCESSr   r   r   setData)
r%   msg_body_split	next_pager   
msg_header	head_bodycrc32strreceive_data
header_arrbody_arrs
             r&   nextzResultData.next6   s=    ty>>Q5c$)nn,,4 "]001CDDN ((**  122Q6	$'	NNq!!HIIIu)..~>>H"4M3x==2 2J #X-Iz%	G"D"D"DEEH=!D$66XFH HL #|'9'9';';r'A'Au%a(B&BCJ#D$>r$ABH#))$*<==J~~d&899H $.a=D &qkDO%a[DN!T_44&qk'{$,QK!&.qk#Xa[)))#$ ty>>Q&& 54ur(   c                     g }| j         t          | j                  k     r!| j        | j                  }| j         dz   | _         |S )uW   返回当前获取的结果的某一行
        @return: 返回当前行数据
        r   )r   r1   r   )r%   return_datas     r&   get_row_datazResultData.get_row_dataq   sD    
 c$)nn,,)D$45K#/!3Dr(   c                    t          | j                  dk    rt          j                    S t          j        | j        | j                  }t          | j                  | _        | j        dk    |                                 z  rpt          j        | j        | j                  }|                    |d          }t          | j                  | _        | j        dk    |                                 z  p|S )uJ   返回当前获取的全部结果
        @return:DataFrame类型
        r   )columns0T)ignore_index)	r1   r   pd	DataFramer   r   r   rL   append)r%   dftemp_dfs      r&   get_datazResultData.get_data|   s     ty>>Q<>>! di===B"49~~D?c)TYY[[8 2,ty$+FFFYYwTY::#&ty>> 	 ?c)TYY[[8 2
 Ir(   c                     |                                 dk    rJ|                                }t          j        d                    |                    }|d         | _        dS g | _        dS )ut   对返回数据进行处理，将string转为list类型
        @return: 返回处理后的list类型数据
        r   recordN)r@   r2   jsonloadsr8   r   )r%   rI   receive_arrayjs_datas       r&   rC   zResultData.setData   sb     2%%(..00Mj!7!788G)DIIIDIIIr(   c                     |                     t          j                  }d}|t          |          k     r5||                                         ||<   |dz  }|t          |          k     5|| _        dS )u   对返回数据的指标参数进行处理，将string中的空格去除
        @return: 返回去除空格后的指标参数
        r   r   N)r2   r   ATTRIBUTE_SPLITr1   r@   r   )r%   receive_fields	field_arris       r&   	setFieldszResultData.setFields   sr     #(()=>>	#i..  $Q<--//IaLFA #i..    r(   N)	__name__
__module____qualname__r'   rL   rO   rY   rC   re    r(   r&   r   r      sp        ! ! !J9 9 9v	 	 	  "
 
 

  
  
  
  
 r(   r   c                       e Zd Zd ZdS )SubscibeDatac                     t           j        | _        d| _        d| _        d| _        d| _        t           j        | _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        i | _        dS )u   实时数据初始化方法r   r   N)r   r	   r
   r   r   r   r   r   r   r   r   	serial_idsubscribe_type	code_list
fncallbackoptionsuser_paramsr   r$   s    r&   r'   zSubscibeData.__init__   s|     3  -			r(   N)rf   rg   rh   r'   ri   r(   r&   rk   rk      s#            r(   rk   )__doc__baostock.common.contantscommoncontantsr   pandasrT   r\   r;   baostock.data.messageheaderr   messageheaderr9   baostock.util.socketutilutil
socketutilr>   objectr   rk   ri   r(   r&   <module>r~      s     ( ' ' ' ' ' ' ' '       / / / / / / / / / ' ' ' ' ' ' ' ' 'S  S  S  S  S  S  S  S l    6     r(   