
    i              
       x   d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZ d dlZd dlZd dlZ	 d dlmZmZmZmZmZ d dlZd dlmZmZmZmZ d dlmZ d dlm Z m!Z! d dl"m#Z# d	d
l$m%Z% dZ&dZ' G d dejP                  jR                        Z* G d de      Z+ G d de      Z, G d de      Z-e*j\                  j_                  d      d$dede0de1fd       Z2e*j\                  j_                  d      d%dede0de3de1fd       Z4ddddZ5ddddZ6ddddZ7ddddZ8d  Z9d! Z:d" Z;d# Z<y# e$ r d dlmZmZmZmZmZ Y w xY w)&    N)GeneratorType)AnyCallableDictIterableListOptionalUnion)	BaseModelPositiveInt
StrictBoolStrictFloatconstr)ConfigModelNumpyOpsRAdam)ConfigValidationError)	GeneratorRagged)partial   )make_tempdira  
[optimizer]
@optimizers = "Adam.v1"
beta1 = 0.9
beta2 = 0.999
use_averages = true

[optimizer.learn_rate]
@schedules = "warmup_linear.v1"
initial_rate = 0.1
warmup_steps = 10000
total_steps = 100000

[pipeline]

[pipeline.parser]
name = "parser"
factory = "parser"

[pipeline.parser.model]
@layers = "spacy.ParserModel.v1"
hidden_depth = 1
hidden_width = 64
token_vector_width = 128

[pipeline.parser.model.tok2vec]
@layers = "Tok2Vec.v1"
width = ${pipeline.parser.model:token_vector_width}

[pipeline.parser.model.tok2vec.embed]
@layers = "spacy.MultiFeatureHashEmbed.v1"
width = ${pipeline.parser.model.tok2vec:width}

[pipeline.parser.model.tok2vec.embed.hidden]
@layers = "MLP.v1"
depth = 1
pieces = 3
layer_norm = true
outputs = ${pipeline.parser.model.tok2vec.embed:width}

[pipeline.parser.model.tok2vec.encode]
@layers = "spacy.MaxoutWindowEncoder.v1"
depth = 4
pieces = 3
window_size = 1

[pipeline.parser.model.lower]
@layers = "spacy.ParserLower.v1"

[pipeline.parser.model.upper]
@layers = "thinc.Linear.v1"
z
[optimizer]
@optimizers = "Adam.v1"
beta1 = 0.9
beta2 = 0.999
use_averages = true

[optimizer.learn_rate]
@schedules = "warmup_linear.v1"
initial_rate = 0.1
warmup_steps = 10000
total_steps = 100000
c                   8    e Zd Z ej                  dddd      Zy)my_registrythinctestscatsF)entry_pointsN)__name__
__module____qualname__	cataloguecreater        h/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/thinc/tests/test_config.pyr   r   [   s    9GWf5IDr&   r   c                   6    e Zd ZU eed<   eed<    G d d      Zy)HelloIntsSchemahelloworldc                       e Zd ZdZy)HelloIntsSchema.ConfigforbidNr    r!   r"   extrar%   r&   r'   r   r-   c       r&   r   N)r    r!   r"   int__annotations__r   r%   r&   r'   r)   r)   _   s    JJ r&   r)   c                   :    e Zd ZU eed<   dZeed<    G d d      Zy)DefaultsSchemarequireddefault valueoptionalc                       e Zd ZdZy)DefaultsSchema.Configr.   Nr/   r%   r&   r'   r   r:   k   r1   r&   r   N)r    r!   r"   r2   r3   r8   strr   r%   r&   r'   r5   r5   g   s    M#Hc# r&   r5   c                   L    e Zd ZU eed<   dZeed<   eed<    ed      Z	eed<   y)	ComplexSchema	outer_reqr7   	outer_opt
level2_reqr   )r6   
level2_optN)
r    r!   r"   r2   r3   r?   r;   r)   r5   rA   r%   r&   r'   r=   r=   o   s&    N$Is$!/!;J;r&   r=   z	catsie.v1Tevilcutereturnc                 
    | ryy)Nscratch!meowr%   )rB   rC   s     r'   	catsie_v1rH   w   s    r&   z	catsie.v2
cute_levelc                     | ry|dkD  ryy)NrF      zmeow <3rG   r%   )rB   rC   rI   s      r'   	catsie_v2rL      s    >r&   F)z@catsrB   rC   c                  <   ddddddddddddddd	id
ddddd} t         j                  |       }|d   }t        j                  dd      }|j	                  |t        j
                  dd             |j                  |       |j                  |d          y )Ni   皙?MbP?)n_hiddendropout
learn_ratezchain.v1zRelu.v1)@layersnOrQ   rS   z
Softmax.v1)relu1relu2softmax)rS   *zAdam.v1)@optimizersrR   )hyper_paramsmodel	optimizerr[   )i  r   f)dtype)XYr\   )r   resolvenumpyones
initializezerosbegin_updatefinish_update)cfgresolvedr[   r_   s       r'   &test_make_config_positional_args_dictsrj      s    %(SN!%.ccJ%.ccJ%|4
 &/eDC ""3'HWE

83'A	qEKK<=	q	-.r&   c                     ddddddddi} t         j                  j                  j                  d      d	t        t
           d
t
        fd       }t         j                  j                  d      dt
        dt        dt        t
           fd       }t        j                  |       d   }|j                  dk(  sJ d	|j                  v sJ |j                  dk(  sJ y )Nr\   zmy_cool_optimizer.v1rN   zmy_cool_repetitive_schedule.v1rO      )z
@schedules	base_raterepeat)rY   beta1rR   rR   ro   c                     t        | |      S )N)ro   )r   )rR   ro   s     r'   make_my_optimizerz3test_objects_from_config.<locals>.make_my_optimizer   s    Zu--r&   rm   rn   rD   c                     || gz  S )Nr%   )rm   rn   s     r'   decayingz*test_objects_from_config.<locals>.decaying   s    ##r&   )r   registry
optimizersregisterr   float	schedulesr2   r   ra   b1rR   )configrq   rs   r\   s       r'   test_objects_from_configr{      s    1>"

F ^^''(>?.d5k .% . @. ^^>?$E $3 $4; $ @$ ##F+K8I<<39.....5(((r&   c                      t         j                  d      dt        t        t        f   fd       } dddid}t         j	                  d|i      d   }t        |t              sJ |j                  dk(  sJ y	)
zlTest that validation can handle checks against arbitrary generic
    types in function argument annotations.zmy_transform.v1r[   c                     d| _         | S )Ntransformed_model)name)r[   s    r'   my_transformz4test_handle_generic_model_type.<locals>.my_transform   s    (
r&   rS   z	Linear.v1)rS   r[   testr~   N)r   layersr   r2   ra   
isinstancer   )r   rh   r[   s      r'   test_handle_generic_model_typer      s~     )*E#s(O  + (9k2J
KC.v6EeU###::,,,,r&   c                      d} t               j                  |       }t        j                  |      }|d   d   }|j                  dk(  sJ y )Nz
    [model]

    [model.chain]
    @layers = "chain.v1"

    [model.chain.*.hashembed]
    @layers = "HashEmbed.v1"
    nO = 8
    nV = 8

    [model.chain.*.expand_window]
    @layers = "expand_window.v1"
    window_size = 1
    r[   chainzhashembed>>expand_window)r   from_strr   ra   r   )str_cfgrh   ri   r[   s       r'   test_arg_order_is_preservedr      sQ    G  (

G
$C""3'HWg&E ::3333r&   )T)Tr   )=inspectpickletypesr   typingr   r   r   r   r   r	   r
   r#   rb   pytestpydantic.v1r   r   r   r   r   ImportErrorpydanticthinc.configr   	thinc.apir   r   r   r   r   thinc.typesr   r   
thinc.utilr   utilr   EXAMPLE_CONFIGOPTIMIZER_CFGrz   rt   r   r)   r5   r=   r   rv   boolr;   rH   r2   rL   good_catsie	ok_catsie
bad_catsieworst_catsierj   r{   r   r   r%   r&   r'   <module>r      si      G G G   QSS  4 4 . )  3jJ%,,'' Ji Y <I < ;'J d c  ( ;'J d s 3  ( $UDA!5%@	"D$?
$dEB/*)6-4E  QPPQs   D# #D98D9