
    i                         d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
 e j                  d        Z G d d      Z G d de      Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)    N)LinearMaxoutModelShimchaindeserialize_attrserialize_attr
with_arrayc                      t        dd      S )N      )r        k/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/tests/test_serialize.pylinearr      s    !Q<r   c                       e Zd ZdZd Zd Zy)SerializableAttrfooc                 8    | j                   j                  d      S Nutf8valueencodeselfs    r   to_byteszSerializableAttr.to_bytes       zz  ((r   c                 8    |j                  d       d| _        | S Nr   z from bytesdecoder   r   datas     r   
from_byteszSerializableAttr.from_bytes       F+,K8
r   N)__name__
__module____qualname__r   r   r%   r   r   r   r   r      s    E)r   r   c                        e Zd ZdZdZd Zd Zy)SerializableShimtestshimshimdatac                 8    | j                   j                  d      S r   r   r   s    r   r   zSerializableShim.to_bytes$   r   r   c                 8    |j                  d       d| _        | S r    r!   r#   s     r   r%   zSerializableShim.from_bytes'   r&   r   N)r'   r(   r)   namer   r   r%   r   r   r   r+   r+       s    DE)r   r+   c                    | j                   j                  dd      | j                   j                  dd      g}t        |       j                         }t	        j
                  |      }t	        j                  |      }|j                  |      }t        |      dk(  sJ |d   j                  |d   j                  d   | j                  d      fk(  sJ |d   j                  |d   j                  d   | j                  d      fk(  sJ y )N   r      r   nO   )opsalloc2fr
   
initializesrslypickle_dumpspickle_loadspredictlenshapeget_dim)r   XsmodelpickledloadedYss         r   test_pickle_with_flattenrE   ,   s    
**

Q
"FJJ$6$6q!$<	=Bv))+E  'G(F		Br7a<<a5;;2a5;;q>6>>$+?@@@@a5;;2a5;;q>6>>$+?@@@@r   c                     t        ddd      j                         } | j                  d      }|dz  }| j                         }| j                  d      }|dz  }| j	                  |      } | j                  d      d   dk(  sJ y )Nr   
   r2   nPbr5   r   r   )r   r8   	get_paramr   r%   rA   rJ   r$   s      r   !test_simple_model_roundtrip_bytesrN   7   s    1bQ**,EAFA>>DAFAT"E??3%***r   c                      t        ddd      } t        ddd      }| j                         }|j                  |      }|j                         }||k(  sJ t        |      t        |      k(  sJ y)zFEnsure that serialization of non-initialized weight matrices goes finer   rG   r2   rH   N)r   r   r%   r=   )model1model2data1data2s       r   (test_simple_model_roundtrip_bytes_lengthrT   B   sh    Ara FAra FOOEu%FOOEE>>u:U###r   c                     d } t               }|j                  dk(  sJ |j                         dk(  sJ t        d| d|i      }|j	                          t        j                  t               d        }t        j                  t               d        }|j                         }|j                  |      }d|j                  v sJ |j                  d   j                  dk(  sJ y )	Nc                     |d fS )Nc                     | S Nr   dYs    r   <lambda>zXtest_simple_model_roundtrip_bytes_serializable_attrs.<locals>.<lambda>.<locals>.<lambda>P       B r   r   rA   Xis_trains      r   r[   zFtest_simple_model_roundtrip_bytes_serializable_attrs.<locals>.<lambda>P       a%7 r   r      footestattrsc                 "    |j                         S rX   r   _r   r0   rA   s       r   serialize_attr_customzStest_simple_model_roundtrip_bytes_serializable_attrs.<locals>.serialize_attr_customW       ~~r   c                 4    t               j                  |      S rX   r   r%   rg   s       r   deserialize_attr_customzUtest_simple_model_roundtrip_bytes_serializable_attrs.<locals>.deserialize_attr_custom[       !,,U33r   foo from bytes)
r   r   r   r   r8   r	   registerr   r%   rd   )fwdattrrA   ri   rm   model_bytess         r   4test_simple_model_roundtrip_bytes_serializable_attrsrt   O   s    
7CD::==?f$$$&#fd^4E	-.  /  /04 14 .."K[)EU[[   ;;v$$(8888r   c                  V   t        t        ddd      t        dd            j                         } | j                  d   j	                  d      }|dz  }| j                  d   j	                  d      }|dz  }| j                         }| j                  d   j	                  d      }|dz  }| j                  d   j	                  d      }|dz  }| j                  |      } | j                  d   j	                  d      d	   dk(  sJ | j                  d   j	                  d      d	   dk(  sJ y 
Nr   rG   r2   rH   r   r   rJ   r5   rK   r   r   r8   layersrL   r   r%   rM   s      r    test_multi_model_roundtrip_bytesry   e   s   &B1%va|4??AEQ!!#&AFAQ!!#&AFA>>DQ!!#&AFAQ!!#&AFAT"E<<?$$S)$/1444<<?$$S)$/1444r   c                     t        t        ddd      t        dd            j                         } | j                  d   j	                  d      }|dz  }| j                  d   j	                  d      }|dz  }| j                         }t        t        dd       t        d             }|j                  |      }|j                  d   j	                  d      d	   dk(  sJ |j                  d   j	                  d      d	   dk(  sJ y rv   rw   )rA   rJ   r$   rQ   s       r   "test_multi_model_load_missing_dimsr{   u   s    &B1%va|4??AEQ!!#&AFAQ!!#&AFA>>D6!%v7Ft$F==%%c*40A555==%%c*40A555r   c                     d } t        d       }t        d| |g      }t        t        dd      |t	        dd            }|j                          |j                  d   j                  d   j                  dk(  sJ |j                         }t        j                  t              5  t        dd      j                  |       d d d        t        d       }t        d| |g      }t        t        dd      |t	        dd            j                  |      }|j                  d   j                  d   j                  d	k(  sJ y # 1 sw Y   xY w)
Nc                     |d fS )Nc                     | S rX   r   rY   s    r   r[   zNtest_serialize_model_shims_roundtrip_bytes.<locals>.<lambda>.<locals>.<lambda>   r\   r   r   r]   s      r   r[   z<test_serialize_model_shims_roundtrip_bytes.<locals>.<lambda>   r`   r   	shimmodel)shimsr2   r   r5   r   r-   zshimdata from bytes)r+   r   r   r   r   r8   rx   r   r   r   pytestraises
ValueErrorr%   )rq   	test_shim
shim_modelrA   rs   	new_models         r   *test_serialize_model_shims_roundtrip_bytesr      s   
7C &I{C	{;J&A,
F1aL9E	<<?  #))Z777.."K	z	" -q!,- &I{C	{;JfQlJq!=HHUIA$$Q'--1FFFF- -s   #D==Ec                  8   d } t        d|       }t        d| |d d      j                         }t        j                  t              5  |j                          d d d        t        d| |d d|g      }|j                  dk(  sJ |j                         }t        j                  t              5  t        d|       j                  |       d d d        t        d| |g      }|j                  |       |j                  dk(  sJ y # 1 sw Y   xY w# 1 sw Y   GxY w)Nc                     |d fS )Nc                     | S rX   r   rY   s    r   r[   zGtest_serialize_refs_roundtrip_bytes.<locals>.<lambda>.<locals>.<lambda>   r\   r   r   r]   s      r   r[   z5test_serialize_refs_roundtrip_bytes.<locals>.<lambda>   r`   r   arb   )r   rJ   )refs)r   rx   )rx   )r   r8   r   r   r   r   	ref_namesr%   )rq   model_arA   rs   r   s        r   #test_serialize_refs_roundtrip_bytesr      s    
7CCoG&#'$=>IIKE	z	" &#'$=wiPE??j(((.."K	z	" 3fc%%k23fc7)4I%*,,, 
3 3s   D.DDDc                     d } ddi}t        d| |      j                         }t        |j                  d   |d   d|      }|t	        j
                  d      k(  sJ t        d| ddi      }t        |j                  d   |d|      }|dk(  sJ t        j                  t              d        }t        j                  t              d        }dt               i}t        d| |      }t        |j                  d   |d   d|      }|dk(  sJ t        d| |      }	|	j                  d   j                  dk(  sJ t        |	j                  d   |d|	      }|j                  d	k(  sJ y )
Nc                     |d fS )Nc                     | S rX   r   rY   s    r   r[   z8test_serialize_attrs.<locals>.<lambda>.<locals>.<lambda>   r\   r   r   r]   s      r   r[   z&test_serialize_attrs.<locals>.<lambda>   r`   r   rb   r   rc    c                 "    |j                         S rX   rf   rg   s       r   ri   z3test_serialize_attrs.<locals>.serialize_attr_custom   rj   r   c                 4    t               j                  |      S rX   rl   rg   s       r   rm   z5test_serialize_attrs.<locals>.deserialize_attr_custom   rn   r   ra   ro   )
r   r8   r	   rd   r9   msgpack_dumpsr   rp   r   r   )
rq   rd   rP   
bytes_attrrQ   resultri   rm   model3model4s
             r   test_serialize_attrsr      st   
7CUOE63e,779FV 4eFmVVTJ,,U333363vrl3Ffll62JOFU?? -.  /  /04 14 %'(E63e,FV 4eFmVVTJ63e,F<<%%...fll62JOF<<++++r   c                  :   t        ddd      j                         } | j                         }| j                  |      sJ t        ddd      j                  |      sJ t        ddd      j                  |      rJ t        dd      j                  |      sJ y )Nr   rG   r2   rH   )r   r8   to_dictcan_from_dict)rA   
model_dicts     r   test_simple_model_can_from_dictr      s    1bQ**,EJz***!RA,,Z888b!"00<<<!?((444r   c                  z   t        t        ddd      t        dd            j                         } | j                         }| j	                  |      sJ t        t        ddd      t        dd            j	                  |      sJ t        t        ddd      t        dd            }|j	                  |      rJ y )Nr   rG   r2   rH   r   )r   r   r8   r   r   )rA   r   resizeds      r   test_multi_model_can_from_dictr      s    &B1%va|4??AEJz***2!$fQl3AA*MMMF1bQ'16G$$Z0000r   )r   r9   	thinc.apir   r   r   r   r   r   r	   r
   fixturer   r   r+   rE   rN   rT   rt   ry   r{   r   r   r   r   r   r   r   r   <module>r      s     	 	 	   	t 	A+
$9,5 6G - ,:51r   