
    +d	                     D    d dl mZmZ d dlmZ  G d de          Zd ZdS )    )RemoteSourceget_partition)Schemac                   x     e Zd ZdZdZdZ fdZd Zd Zd Z	d Z
d	 Zedd            Zedd            Z xZS )RemoteSequenceSourcez-Sequence-of-things source on an Intake serverremote_sequencepythonc                 B   || _         |                    dd          | _        | j        dk    | _        || _        |                    di           | _        t          | j        | j                  | _        d | _         t          t          |           j        ||fi | d S )N
npartition   metadata)npartitionsextra_metadata)urlgetr   partition_accessheadersr   r   _schemabagsuperr   __init__)selfr   r   kwargs	__class__s       ?lib/python3.11/site-packages/intake/container/semistructured.pyr   zRemoteSequenceSource.__init__   s    !::lA66 $ 01 4

:r22$*:4=YYY2"D))23JJ6JJJJJ    c                      dd l dd lm}  j        E fdt           j                  D              _        |                     j                   _         j        S )Nr   c           	          g | ]=}                      t                    j        j        j        j        |          >S  )delayedr   r   r   
_source_id	container).0idaskr   s     r   
<listcomp>z7RemoteSequenceSource._load_metadata.<locals>.<listcomp>!   sV      T  T  Tvw5$,,}55dhdo_c_mopqq  T  T  Tr   )r%   dask.bagr   ranger   partsfrom_delayedr   )r   dbr%   s   ` @r   _load_metadataz#RemoteSequenceSource._load_metadata   s    8 	3 T  T  T  T  T  |A  BF  BR  |S  |S  T  T  TDJtz22DH|r   c                 h    |                                   | j        |                                         S N)r,   r)   compute)r   r$   s     r   _get_partitionz#RemoteSequenceSource._get_partition%   s,    z!}$$&&&r   c                 \    |                                   | j                                        S r.   )r,   r   r/   r   s    r   readzRemoteSequenceSource.read)   s(    x!!!r   c                 8    |                                   | j        S r.   )r,   r   r2   s    r   to_daskzRemoteSequenceSource.to_dask-   s    xr   c                     d | _         d S r.   )r   r2   s    r   _closezRemoteSequenceSource._close1   s    r   Nc                     ddl }ddl}t          t          |j        |j        d|         }	 |                                 }n$# t
          $ r |                                 }Y nw xY wt          j        |||fi |S )zSave list to files using encoding

        encoder : None or one of str|json|pickle
            None is equivalent to str
        r   NNstrjsonpickle)	r;   r<   r:   dumpsr5   NotImplementedErrorr3   r   _data_to_source)sourcepathencoderr   r;   r<   bs          r   _persistzRemoteSequenceSource._persist4   s     	S$*UUV]^	  AA" 	 	 	AAA	#3AtWOOOOOs   A   A! A!c                 t   dd l }dd l}dd l}dd l}dd lm}	 ddlm}
 ddlm	} t          t          |j        |j        d                              t          | d          s.	 |	                    | d          } n# t          $ r t           w xY w |
|                    |d          fd	| j        d
|pi }|                    t(                    fdt+          |                                 |          D             }|                    |            ||                    |d          |          }|S )Nr   )
open_files)TextFilesSourcer9   to_textfilesr   )r   zpart.*wt)modenumc                 0    g | ]\  }} ||          S r   r   )r#   partfdwriterB   s      r   r&   z8RemoteSequenceSource._data_to_source.<locals>.<listcomp>[   s+    RRRGD!vvdAw''RRRr   )storage_options)r;   r<   	posixpathr%   r'   r   fsspecrF   intake.source.textfilesrG   r:   r=   r   hasattrfrom_sequence	TypeErrorr>   joinr   r    
write_filezip
to_delayedr/   )rC   rA   rB   rP   r   r;   r<   rQ   r%   r+   rF   rG   filesoutsrO   s     `            @r   r?   z$RemoteSequenceSource._data_to_sourceE   s   %%%%%%;;;;;;S$*UUYYZacjkkq.)) 	**$$QA$66 * * *))* 
9>>$99s!-ss\k\qoqssj))RRRRRs1<<>>57Q7QRRRSOINN4::O\\\s   %A= =Br.   )NN)__name__
__module____qualname____doc__namer"   r   r,   r0   r3   r5   r7   staticmethodrD   r?   __classcell__)r   s   @r   r   r      s        77DIK K K K K  ' ' '" " "     P P P \P     \    r   r   c                     |5 }| D ] }|                      ||                     !	 d d d            d S # 1 swxY w Y   d S r.   )write)dataforB   rN   ds        r   rX   rX   a   s    	  q 	  	 AGGGGAJJ	                                    s   $599N)intake.container.baser   r   intake.source.baser   r   rX   r   r   r   <module>rl      s}    > = = = = = = = % % % % % %R R R R R< R R Rj         r   