
    i                        d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZmZmZmZmZ ddlmZ e gZ	 d dlZej)                  e       ej,                  j/                  d e j0                  d	      d
f e j2                  d      d f e j2                  ddg      df e j0                  d       e j0                  d      gdf e e j0                  d       e j0                  d            df e e j0                  d       e j0                  d       e j2                  dd g       e j2                  d dg            dfg d fg      d        Zej,                  j/                  dddd e j2                  d       ig      d        Zej,                  j/                  de      d        Z e ej:                  ddd            d        Zd Zy# e$ r Y w xY w)    N)given)PaddedRagged	get_width)
ArgsKwargs)convert_recursiveget_array_moduleis_cupy_arrayis_numpy_arrayto_categorical   )
strategiesz	obj,width)r            r   r   r   r   r   )r   r   r   c                 $    t        |       |k(  sJ y N)r   )objwidths     f/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/tests/test_util.pytest_get_widthr      s    * S>U"""    r   i  fooac                 v    t        j                  t              5  t        |        d d d        y # 1 sw Y   y xY wr   )pytestraises
ValueErrorr   r   s    r   test_get_width_failr!   2   s*    	z	" #  s   /8xpc                 @   d}t        j                  t        |      5  t        d       d d d        | j	                  d      }t        |      }|| k(  sJ | t
        k(  rt        |      sJ t        d      rJ y t        |      sJ t        d      rJ y # 1 sw Y   kxY w)NzOnly numpy and cupy arrays are supported, but found <class 'int'> instead. If get_array_module module wasn't called directly, this might indicate a bug in Thinc.matchr   r   )r   r   r   r	   zerosnumpyr   r
   )r"   errorr&   xp_s       r   !test_array_module_cpu_gpu_helpersr*   8   s    	8 
 
z	/ HHVE
5
!C"99	U{e$$$!&))))U### (((( s   BBg        g      ?T)	min_value	max_valueexclude_maxlabel_smoothingc           	      
   t        t        j                  ddgd            }|j                  dk(  sJ d}g d}d|fd|fd	d|fdd	d|fdd|fddd|fg}|D cg c]#  }t        j                  j                  d
||      % }}|D cg c]  }t        ||       }}|D cg c]  }t        |||        }	}t        t        |            D ]  }
||
   }||
   }||
   }|	|
   }|j                  |k(  sJ |j                  |k(  sJ t        j                  ||j                  t                    sJ t        j                  |j                  d      dk(        sJ t        j                  t        j                  |d      j                  |j                        |k(        sJ t        j                  |j                  d      |j                  d      k(        sJ t        j                  t        j                  t        j                  |d      d            sJ t        j                  t        j                   |      d| z
        sJ t        j                  t        j"                  |      | |j                  d   dz
  z        rJ  t        j$                  j'                  t        t        j                  g d      d      dgdgdgg       t        j$                  j'                  t        t        j                  g d            dgdgdgg       t)        j*                  t,        d      5  t        t        j                  g d      d
       d d d        t        j$                  j'                  t        t        j                  g d      dd      ddgddgddgg       t        j$                  j'                  t        t        j                  g d      d      ddgddgddgg       t)        j*                  t,        d      5  t        t        j                  g d      dd      f d d d        t)        j*                  t,        d      5  t        t        j                  g d      d      f d d d        t)        j*                  t,        d      5  t        t        j                  g d      d       d d d        t)        j*                  t,        d      5  t        t        j                  g d      d       d d d        y c c}w c c}w c c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   i)dtype)r   r      ))r   )r   )r   r   )r3   r   r   )r   r   )r   r   r   r   r   r   r.   )axisg      ?)r   r   r   zn_classes should be at least 1r$   )r   r   r   g{Gz?gGz?z:n_classes should be greater than 1.*label smoothing.*but 1zlabel_smoothing parameter)r   r   r   r   r   g?g)\(?)r   r'   asarrayshaperandomrandintrangelenarray_equalastypeboolallsumargmaxreshapeisclosemaxmintestingassert_allcloser   r   r   )r/   one_hotncshapesexpected_shapesr7   labelslabelone_hotssmoothsr1   expected_shapesmooths                r   test_to_categoricalrR   M   s   
 U]]Aq6=>G==F""" 
B?F	
B	
B	
Ar
	
Aq"	
Ar
	
Aq"O ?EEUell""1b%0EFE7=>eub)>H>PVGLub/BG  3'( 
q	1+(+}}...||~---  '..*>???yy"-2333yygr2::5;;G5PQQQyyB/7>>r>3JJKKKyyuyyb'A3GHHH}}UYYv.O0CDDD}}IIf&,,r2BQ2FG
 	
 

$ 
MM!!u}}Y/3secUSE5J 
MM!!u}}Y/0C53%#2G 
z)J	K 4u}}Y/34 
MM!!u}}Y/DI
d|dD\2 
MM!!u}}Y/F
d|dD\2 
W
 K 	u}}Y/DIJK 
W
 H 	u}}Y/FGH
 
z)E	F Lu}}_5sKL 
z)E	F Mu}}_5tLM Mk F>64 4K KH H
L LM MsN   (TTT-"T%T"$T.#T:#UT"T+.T7:UUc                  :   d } d }dddddddgdii}t        | ||      }|d   d	   d
   dk(  sJ |d   d	   d   ddddgk(  sJ dt        dddigfdddgi      i}t        | ||      }|d   j                  dddigfk(  sJ |d   j                  dddgik(  sJ y )Nc                     | dk(  S )Nr    r    s    r   <lambda>z(test_convert_recursive.<locals>.<lambda>   s
    3%< r   c                 "    | j                         S r   )upperr    s    r   rV   z(test_convert_recursive.<locals>.<lambda>   s    syy{ r   r   )br   r   )r   r   )ef)cd)rY   FOOr\   r^   r]   )r   r^   rY   x)r   r   argskwargs)is_matchconvert_itemr   results       r   test_convert_recursivere      s    'H*Ll%uE
6S.TUVC xs;F#;|$S)U222#;|$S)e5z5R-SSSS
ES%L>2S3,4GH
ICxs;F#;e~6666#;#U|!4444r   ) r'   r   
hypothesisr   	thinc.apir   r   r   thinc.typesr   
thinc.utilr   r	   r
   r   r    r   ALL_XPcupyappendImportErrormarkparametrizer&   arrayr   r!   r*   floatsrR   re   rU   r   r   <module>rs      s      / / "  
	
MM$
 	\	"A&	Q	aV	a 
%++f
{u{{A/	0!4	F#[U[[^	4a8I&AQF#QF#	 	
 
Q(#)(# usKEKKN.C DE F
 v&) ')( %J%%sPTUFMFMR5G  		s   G
 
GG