B
    ~d#                 @   st   d Z ddlZddlmZ ddlmZ ddlmZ dZdd	d
Z	dd Z
dd Zddg dfddZdd Zdd ZdS )zMock objects for GWpy tests
    N)mock   )Channel)LIGOTimeGPSz(Duncan Macleod <duncan.macleod@ligo.org>   c       
      C   sn   dd l }t|}t|j}	t||	_t| |||	_|p>|	jj	|	_	||	_
|j|	_|j|	_||	_||	_||	_|	S )Nr   )nds2r   r   create_autospecbufferlenlengthnds2_channelchannelnamesample_rateZ
gpsSecondsgps_secondsZgpsNanoSecondsgps_nanosecondsZsignal_slopeZsignal_offsetdata)
r   r   epochr   unitr   Zslopeoffsetr   Z	ndsbuffer r   _/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/gwpy/testing/mocks.pynds2_buffer!   s    
r   c             C   s"   t | j| j| jj| jjt| jS )N)r   r   valuet0r   strr   )tsr   r   r   nds2_buffer_from_timeseries2   s    r   c             C   sn   dd l }t|j}| |_||_||_d|_|jj|_d|_	x,t
j|jdd dD ]\}}t||| qRW |S )Nr   r      c             S   s
   t | tS )N)
isinstanceint)xr   r   r   <lambda>A       znds2_channel.<locals>.<lambda>)	predicate)r   r   r   r   r   r   Zsignal_unitsZchannel_typeZchannel_type_to_stringZ	data_typeinspect
getmemberssetattr)r   r   r   r   r   attrr   r   r   r   r   7   s    
r   znds.test.gwpyiy  c       	         s   dd l }t|j}yd|j_W n tk
r4   Y nX | |j_t||j	_t||j
_ fdd}||_ fdd}||_ fdd}||_|S )	Nr   Fc                s   sg S  fddD gS )Nc                s"   g | ]}t |jj kr|qS r   )r   	from_nds2r   Zndsname).0b)namesr   r   
<listcomp>U   s    z4nds2_connection.<locals>.iterate.<locals>.<listcomp>r   )startendr,   )buffers)r,   r   iterateR   s    z nds2_connection.<locals>.iteratec                s    fddD S )Nc                s   g | ]}|j j kr|j qS r   )r   r   )r*   r+   )r   r   r   r-   [   s    z:nds2_connection.<locals>.find_channels.<locals>.<listcomp>r   )r   ctypeZdtyper   )r0   )r   r   find_channelsZ   s    z&nds2_connection.<locals>.find_channelsc                sp   g }xf D ]^}d t|j}|| kr.g }n*|j|jd  }||j|j  }||fg}|t	|| q
W |S )Nz{0.name},{0.type}g&.>)
formatr   r)   r   r   r   r   r   appendnds2_availability)r,   outZbuffr   Zsegsr.   r/   )r0   r   r   get_availability_   s    

z)nds2_connection.<locals>.get_availability)r   r   r   
connectionZget_parameterreturn_valueAttributeErrorget_hostr    Zget_portget_protocolr1   r3   r8   )	hostportr0   protocolr   ZNdsConnectionr1   r3   r8   r   )r0   r   nds2_connectionF   s     rA   c             C   s0   dd l }t|j}| |_ttt||j_	|S )Nr   )
r   r   r   availabilityr   listmapnds2_segmentZsimple_listr:   )r   segmentsr   rB   r   r   r   r6   q   s
    r6   c             C   s,   dd l }t|j}| d |_| d |_|S )Nr   r   )r   r   r   Zsimple_segmentZ	gps_startZgps_stop)segmentr   Znds2segr   r   r   rE   y   s
    

rE   )Nr   r   )__doc__r%   Zunittestr   detectorr   timer   
__author__r   r   r   rA   r6   rE   r   r   r   r   <module>   s   
+