
    Mic                         S r SSKrSSKrSSKrSSKrSSKJr  \R                  " \	5      r
SrSrS rS rS r " S	 S
\R                   5      r " S S\R                   5      rg)z,Implements reading and writing to/from HDFS.    N)utils)hdfsviewfs)zhdfs:///path/filezhdfs://path/filezviewfs:///path/filezviewfs://path/filec                    [         R                  R                  U 5      nUR                  [        ;   d   eUR
                  UR                  -   nSUR                  S5      -   nU(       d  [        SU -  5      e[        UR                  US9$ )N/zinvalid HDFS URI: %r)schemeuri_path)
urllibparseurlsplitr   SCHEMESnetlocpathlstripRuntimeErrordict)uri_as_string	split_urir	   s      i/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/smart_open/hdfs.py	parse_urir      sx    %%m4Iw&&&)..0HX__S))H1MABBy''(;;    c                     [         R                  " [        U5        [        U 5      n[        US   U5      nUS   R	                  S5      S   Ul        U$ )Nr	   r   )r   check_kwargsopenr   splitname)urimodetransport_params
parsed_urifobjs        r   open_urir#   *   sN    	t-.3J
:&-D:&,,S1"5DIKr   c                 b    US:X  a  [        U 5      $ US:X  a  [        U 5      $ [        SU-  5      e)Nrbwbz(hdfs support for mode %r not implemented)CliRawInputBaseCliRawOutputBaseNotImplementedError)r   r   s     r   r   r   3   s7    t|s##	$$!"Lt"STTr   c                   d    \ rS rSrSrSrS rS r\S 5       r	S r
S rS	 rSS
 jrSS jrS rSrg)r'   <   zReads bytes from HDFS via the "hdfs dfs" command-line interface.

Implements the io.RawIOBase interface of the standard library.
Nc                 |    Xl         [        R                  " SSSU R                   /[        R                  S9U l        g )Nr   dfsz-cat)stdout_uri
subprocessPopenPIPE_subselfr   s     r   __init__CliRawInputBase.__init__C   s/    	$$feVTYY%GPZP_P_`	r   c                     [         R                  S5        U R                  (       d"  U R                  R	                  5         SU l        gg)zFlush and close this stream.close: calledN)loggerdebugclosedr4   	terminater6   s    r   closeCliRawInputBase.closeJ   s1    _%{{II!DI r   c                     U R                   S L $ Nr4   r?   s    r   r=   CliRawInputBase.closedQ       yyD  r   c                     U R                   SL$ )z+Return True if the stream can be read from.NrD   r?   s    r   readableCliRawInputBase.readableU       yy$$r   c                     gz;If False, seek(), tell() and truncate() will raise IOError.F r?   s    r   seekableCliRawInputBase.seekableY       r   c                 "    [         R                  e)zUnsupported.ioUnsupportedOperationr?   s    r   detachCliRawInputBase.detach`   s    %%%r   c                 L    U R                   R                  R                  U5      $ )z6Read up to size bytes from the object and return them.)r4   r.   readr6   sizes     r   rX   CliRawInputBase.readd   s    yy$$T**r   c                      U R                  US9$ )zThis is the same as read().)rZ   )rX   rY   s     r   read1CliRawInputBase.read1h   s    yydy##r   c                 v    U R                  [        U5      5      nU(       d  gX!S[        U5      & [        U5      $ )zDRead up to len(b) bytes into b, and return the number of bytes
read.r   N)rX   len)r6   bdatas      r   readintoCliRawInputBase.readintol   s3     yyQ *3t94yr   r4   r0   )r   )__name__
__module____qualname____firstlineno____doc__r4   r7   r@   propertyr=   rH   rN   rU   rX   r]   rc   __static_attributes__rM   r   r   r'   r'   <   sK     Da ! !%&+$r   r'   c                   V    \ rS rSrSrSrS rS r\S 5       r	S r
S rS	 rS
 rS rSrg)r(   v   zWrites bytes to HDFS via the "hdfs dfs" command-line interface.

Implements the io.RawIOBase interface of the standard library.
Nc                     Xl         [        R                  " SSSSSU R                   /[        R                  S9U l        g )Nr   r-   z-putz-f-)stdinr/   r5   s     r   r7   CliRawOutputBase.__init__}   s3    	$$feVT3		%R+5??<	r   c                     [         R                  S5        U R                  (       dV  U R                  5         U R                  R
                  R                  5         U R                  R                  5         S U l        g g )Nr:   )r;   r<   r=   flushr4   rq   r@   waitr?   s    r   r@   CliRawOutputBase.close   sL    _%{{JJLIIOO!!#IINNDI	 r   c                     U R                   S L $ rC   rD   r?   s    r   r=   CliRawOutputBase.closed   rF   r   c                 L    U R                   R                  R                  5         g rC   )r4   rq   rt   r?   s    r   rt   CliRawOutputBase.flush   s    		r   c                     U R                   SL$ )z(Return True if this object is writeable.NrD   r?   s    r   	writeableCliRawOutputBase.writeable   rJ   r   c                     grL   rM   r?   s    r   rN   CliRawOutputBase.seekable   rP   r   c                 N    U R                   R                  R                  U5        g rC   )r4   rq   write)r6   ra   s     r   r   CliRawOutputBase.write   s    		a r   c                 .    [         R                  " S5      e)Nzdetach() not supportedrR   r?   s    r   rU   CliRawOutputBase.detach   s    %%&>??r   re   )rf   rg   rh   ri   rj   r4   r7   r@   rk   r=   rt   r|   rN   r   rU   rl   rM   r   r   r(   r(   v   sF     D<
 ! ! %!@r   r(   )rj   rS   loggingr1   urllib.parser
   
smart_openr   	getLoggerrf   r;   r   URI_EXAMPLESr   r#   r   	RawIOBaser'   r(   rM   r   r   <module>r      sh    3 	    			8	$
	<U7bll 7t*@r|| *@r   