
    h                         S SK r S SKJr  S SKrS SKJr  S SKrSSKJrJ	r	  SSKJ
r
Jr  SSKJrJr  SS	KJr  S
 rS rS rS rS r\" SS5      \" SS5      S 5       5       rS rg)    N)Path)patch   )read_msgpackwrite_msgpack)msgpack_loadsmsgpack_dumps)msgpack_encodersmsgpack_decoders   )make_tempdirc                  :    SSS.n SS/n[        U 5      nX!;   d   eg )Nworld{   hellotest   helloworldtest{   test{helloworld)r	   )dataexpectedmsgs      V/home/james-whalen/.local/lib/python3.13/site-packages/srsly/tests/test_msgpack_api.pytest_msgpack_dumpsr      s+    c*D24VWH

C??    c                  l    Sn [        U 5      n[        U5      S:X  d   eUS   S:X  d   eUS   S:X  d   eg )Nr   r   r   r   r   r   )r   len)r   r   s     r   test_msgpack_loadsr      sE    
,CDt9>>=G###<3r   c                      Sn [        SU 0SS9 nUS-  nUR                  5       (       d   e[        U5      nS S S 5        [        W5      S:X  d   eUS   S:X  d   eg ! , (       d  f       N+= f)Ns   helloworldtmp.msgwbmoder   r   r   )r   existsr   r   )file_contentstemp_dir	file_pathr   s       r   test_read_msgpack_filer(      ss    -M	y-0t	<y(	!!!!I& 
= t9>>=G### 
=	<s   (A
A*c                  
   Sn [        SU 0SS9 nUS-  nUR                  5       (       d   e[        R                  " [        5         [        U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Ns   helloworldr    r!   r"   )r   r$   pytestraises
ValueErrorr   )r%   r&   r'   s      r   test_read_msgpack_file_invalidr-   &   sj    )M	y-0t	<y(	!!!!]]:&# ' 
=	< '& 
=	<s#   7A4A#A4#
A1	-A44
Bc                     SSS.n SS/n[        SS9 nUS-  n[        X05        [        U5      R                  S	5       nUR	                  5       U;   d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
Nr   r   r   r   r   r!   r"   r    rb)r   r   r   openread)r   r   r&   r'   fs        r   test_write_msgpack_filer3   /   sz    c*D24VWH	4	 Hy(	i&)_!!$'1668x''' ( 
!	  (' 
!	 s"   +A8A'A8'
A5	1A88
Bzsrsly.msgpack._msgpack_numpy.npz&srsly.msgpack._msgpack_numpy.has_numpyFc                      [         R                  " [        5         [        [	        [
        R
                  R                  5       5      5        SSS5        g! , (       d  f       g= f)zTest that msgpack works without numpy and raises correct errors (e.g.
when serializing datetime objects, the error should be msgpack's TypeError,
not a "'np' is not defined error").N)r*   r+   	TypeErrorr   r	   datetimenow r   r   test_msgpack_without_numpyr9   9   s8     
y	!mH$5$5$9$9$;<= 
"	!	!s   1A
A#c                    ^  " S S5      mSU4S jjn SU4S jjnST" SS05      S.n[         R                  " [        5         [        U5        S S S 5        [        R
                  " S	U S
9  [        R
                  " S	US
9  [        U5      n[        U5      nUS   S:X  d   e[        US   T5      (       d   eUS   R                  SS0:X  d   e[        R                  " S5      T" SS05      S.n[        U5      n[        U5      n[        US   [        R                  5      (       d   e[        US   T5      (       d   eUS   R                  SS0:X  d   eg ! , (       d  f       GN= f)Nc                       \ rS rSrS rSrg)9test_msgpack_custom_encoder_decoder.<locals>.CustomObjectD   c                     Xl         g Nvalue)selfrA   s     r   __init__Btest_msgpack_custom_encoder_decoder.<locals>.CustomObject.__init__E   s    Jr   r@   N)__name__
__module____qualname____firstlineno__rC   __static_attributes__r8   r   r   CustomObjectr<   D   s    	r   rJ   c                 \   > [        U T5      (       a  SU R                  0$ Uc  U $ U" U 5      $ N
__custom__)
isinstancerA   objchainrJ   s     r   serialize_obj:test_msgpack_custom_encoder_decoder.<locals>.serialize_objH   s2    c<(( #)),,ms3s3r   c                 @   > SU ;   a  T" U S   5      $ Uc  U $ U" U 5      $ rL   r8   rO   s     r   deserialize_obj<test_msgpack_custom_encoder_decoder.<locals>.deserialize_objM   s.    3L 122ms3s3r   r   foobar)abcustom_object)funcrY   rZ   )r   r      r?   )r*   r+   r5   r	   r
   registerr   r   rN   rA   numpyzerosndarray)rR   rU   r   
bytes_datanew_datarJ   s        @r   #test_msgpack_custom_encoder_decoderrd   C   sG    4
4
 <78D	y	!d 
" oMBoODt$JZ(HC=Chsm\2222C=5%.000Y'lE5>.JKDt$JZ(HhsmU]]3333hsm\2222C=5%.000# 
"	!s   E
E')r*   pathlibr   r6   mockr   r_   _msgpack_apir   r   r   r	   r
   r   utilr   r   r   r(   r-   r3   r9   rd   r8   r   r   <module>ri      sj         6 7 = $$( ($//7> 8 0>!1r   