
    h                         S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	   " S S\R                  5      r\S:X  a  \R                  " 5         gg)    N)picklec                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 r\R                  R                  SS9S 5       rSrg)CloudPickleFileTests   zIn Cloudpickle, expected behaviour when pickling an opened file
is to send its contents over the wire and seek to the same position.c                     [         R                  " 5       U l        [        R                  R                  U R                  S5      U l        SU l        g )NtestfilezHello world!)tempfilemkdtemptmpdirospathjointmpfilepath
teststringselfs    g/home/james-whalen/.local/lib/python3.13/site-packages/srsly/tests/cloudpickle/cloudpickle_file_test.pysetUpCloudPickleFileTests.setUp   s4    &&(77<<Z@(    c                 D    [         R                  " U R                  5        g N)shutilrmtreer   r   s    r   tearDownCloudPickleFileTests.tearDown   s    dkk"r   c           	      |   [        U R                  S5      R                  5         [        U R                  S5       nU R                  S[        R
                  " [        R                  " U5      5      R                  5       5        S S S 5        [        R                  " U R                  5        g ! , (       d  f       N/= f)Nwr )openr   closeassertEqualr   loadscloudpickledumpsreadr   remover   fs     r   test_empty_file$CloudPickleFileTests.test_empty_file   sz    Ts#))+$""C(ARk.?.?.B!C!H!H!JK )
		$""# )(s   A	B--
B;c                    [        U R                  S5       nUR                  U R                  5        S S S 5        [        R
                  " [        R                  5       n[        R                  " W5        S S S 5        S[        WR                  5      ;   d   e[        R                  " U R                  5        g ! , (       d  f       N= f! , (       d  f       N[= f)Nr   zCannot pickle closed files)r!   r   writer   pytestraisesr   PicklingErrorr%   r&   strvaluer   r(   )r   r*   excinfos      r   test_closed_file%CloudPickleFileTests.test_closed_file    s    $""C(AGGDOO$ )]]6//0Ga  1+s7==/AAAA
		$""# )(00s   B:C:
C
Cc                    [        U R                  S5       nUR                  U R                  5        S S S 5        [        U R                  S5       n[        R
                  " [        R                  " U5      5      nU R                  U R                  UR                  5       5        S S S 5        [        R                  " U R                  5        g ! , (       d  f       N= f! , (       d  f       N@= f)Nr   r   )r!   r   r.   r   r   r$   r%   r&   r#   r'   r   r(   r   r*   new_fs      r   test_r_mode CloudPickleFileTests.test_r_mode)   s    $""C(AGGDOO$ ) $""C(ALL!2!21!56ET__ejjl; ) 			$""# )( )(s   CAC 
C 
C.c                 F  ^ [        U R                  S5       mTR                  U R                  5        TR	                  S5        U R                  [        R                  U4S j5        S S S 5        [        R                  " U R                  5        g ! , (       d  f       N/= f)Nr   r   c                  0   > [         R                  " T 5      $ r   )r%   r&   )r*   s   r   <lambda>2CloudPickleFileTests.test_w_mode.<locals>.<lambda>8   s    k&7&7&:r   )
r!   r   r.   r   seekassertRaisesr   r1   r   r(   r)   s    @r   test_w_mode CloudPickleFileTests.test_w_mode3   sk    $""C(AGGDOO$FF1If22:< )
 			$""# )(s   AB
B c                    [        U R                  S5       nUR                  U R                  5        UR	                  S5        [
        R                  " [        R                  " U5      5      nU R                  U R                  UR                  5       5        S S S 5        [        R                  " U R                  5        g ! , (       d  f       N/= f)Nw+r   )r!   r   r.   r   r@   r   r$   r%   r&   r#   r'   r   r(   r8   s      r   test_plus_mode#CloudPickleFileTests.test_plus_mode;   s    $""D)QGGDOO$FF1ILL!2!21!56ET__ejjl;	 *
 			$""# *)s   BC
Cc                 `   [        U R                  S5       nUR                  U R                  5        UR	                  S5        [
        R                  " [        R                  " U5      5      nU R                  SUR                  5       5        U R                  U R                  SS  UR                  5       5        UR	                  S5        U R                  U R                  UR                  5       5        S S S 5        [        R                  " U R                  5        g ! , (       d  f       N/= f)NrE      r   )r!   r   r.   r   r@   r   r$   r%   r&   r#   tellr'   r   r(   )r   r*   	unpickleds      r   	test_seekCloudPickleFileTests.test_seekD   s    $""D)QGGDOO$FF1I[%6%6q%9:IQ	 01T__QR0)..2BCNN1T__inn.>? * 			$""# *)s   CD
D-zRequires pytest -s to pass)reasonc           	         [         R                  [         R                  4 H=  nU R                  U[        R
                  " [        R                  " U5      5      5        M?     U R                  [        R                  S 5        g )Nc                  J    [         R                  " [        R                  5      $ r   )r%   r&   sysstdin r   r   r>   ICloudPickleFileTests.test_pickling_special_file_handles.<locals>.<lambda>X   s    +"3"3CII">r   )
rQ   stdoutstderrr#   r   r$   r%   r&   rA   r1   )r   outs     r   "test_pickling_special_file_handles7CloudPickleFileTests.test_pickling_special_file_handlesR   sY     ::szz)CS&,,{/@/@/E"FG *&..>	@r   )r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r+   r5   r:   rB   rF   rL   r/   markskiprX   __static_attributes__rS   r   r   r   r      sY    L)
#$$$$$$ [[9:@ ;@r   r   __main__)r   r   rQ   r	   unittestr/   srsly.cloudpickler%   srsly.cloudpickle.compatr   TestCaser   rZ   mainrS   r   r   <module>rh      sL    	  
    ' +K@8,, K@\ zMMO r   