
    h              
          S SK r S SKrS SKJr  S SKJrJrJrJrJ	r	J
r
Jr  S SKrS SKrS SKr S SKJrJrJrJrJr  S SKrS SKJrJrJrJr  S SKJr  S SKJ r J!r!  S SK"J#r#  S	S
K$J%r%  Sr&Sr' " S S\RP                  RR                  5      r* " S S\5      r+ " S S\5      r, " S S\5      r-\*R\                  R_                  S5      S$S\S\0S\14S jj5       r2\*R\                  R_                  S5      S%S\S\0S\3S\14S jj5       r4SSSS.r5SSSS.r6SSSS.r7SSSS.r8S  r9S! r:S" r;S# r<g! \ a    S SKJrJrJrJrJr   GNf = f)&    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                   :    \ rS rSr\R
                  " SSSSS9rSrg)	my_registry[   thinctestscatsF)entry_points N)__name__
__module____qualname____firstlineno__	cataloguecreater   __static_attributes__r!       Q/home/james-whalen/.local/lib/python3.13/site-packages/thinc/tests/test_config.pyr   r   [   s    GWf5IDr)   r   c                   >    \ rS rSr% \\S'   \\S'    " S S5      rSrg)HelloIntsSchema_   helloworldc                       \ rS rSrSrSrg)HelloIntsSchema.Configc   forbidr!   Nr"   r#   r$   r%   extrar(   r!   r)   r*   r   r1   c       r)   r   r!   N)r"   r#   r$   r%   int__annotations__r   r(   r!   r)   r*   r,   r,   _   s    JJ r)   r,   c                   B    \ rS rSr% \\S'   Sr\\S'    " S S5      rSr	g)	DefaultsSchemag   requireddefault valueoptionalc                       \ rS rSrSrSrg)DefaultsSchema.Configk   r3   r!   Nr4   r!   r)   r*   r   r@   k   r6   r)   r   r!   N)
r"   r#   r$   r%   r7   r8   r>   strr   r(   r!   r)   r*   r:   r:   g   s    M#Hc# r)   r:   c                   N    \ rS rSr% \\S'   Sr\\S'   \\S'   \	" SS9r
\	\S'   S	rg
)ComplexSchemao   	outer_reqr=   	outer_opt
level2_reqr   )r<   
level2_optr!   N)r"   r#   r$   r%   r7   r8   rG   rB   r,   r:   rI   r(   r!   r)   r*   rD   rD   o   s&    N$Is$!/!;J;r)   rD   z	catsie.v1Tevilcutereturnc                     U (       a  gg)Nscratch!meowr!   )rJ   rK   s     r*   	catsie_v1rP   w   s    r)   z	catsie.v2
cute_levelc                 "    U (       a  gUS:  a  gg)NrN      zmeow <3rO   r!   )rJ   rK   rQ   s      r*   	catsie_v2rT      s    >r)   F)z@catsrJ   rK   c                  .   SSSS.SSSSS.SSSS.SS	0S
.S.SSS.S.n [         R                  U 5      nUS   n[        R                  " SSS9nUR	                  U[        R
                  " SSS9S9  UR                  U5        UR                  US   5        g )Ni   皙?MbP?)n_hiddendropout
learn_ratezchain.v1zRelu.v1)@layersnOrY   r[   z
Softmax.v1)relu1relu2softmax)r[   *zAdam.v1)@optimizersrZ   )hyper_paramsmodel	optimizerrc   )i  r   f)dtype)XYrd   )r   resolvenumpyones
initializezerosbegin_updatefinish_update)cfgresolvedrc   rg   s       r*   &test_make_config_positional_args_dictsrr      s    %(SN!%.ccJ%.ccJ%|4
 &/eDC ""3'HWE

83'A	qEKK<=	q	-.r)   c                     SSSSSSS.S.0n [         R                  R                  R                  S5      S	[        [
           S
[
        4S j5       n[         R                  R                  S5      S[
        S[        S[        [
           4S j5       n[        R                  U 5      S   nUR                  S:X  d   eS	UR                  ;   d   eUR                  S:X  d   eg )Nrd   zmy_cool_optimizer.v1rV   zmy_cool_repetitive_schedule.v1rW      )z
@schedules	base_raterepeat)ra   beta1rZ   rZ   rw   c                     [        XS9$ )N)rw   )r   )rZ   rw   s     r*   make_my_optimizer3test_objects_from_config.<locals>.make_my_optimizer   s    Z--r)   ru   rv   rL   c                     X/-  $ )Nr!   )ru   rv   s     r*   decaying*test_objects_from_config.<locals>.decaying   s    ##r)   )r   registry
optimizersregisterr   float	schedulesr7   r   ri   b1rZ   )configry   r|   rd   s       r*   test_objects_from_configr      s    1>"

F ^^''(>?.d5k .% . @. ^^>?$E $3 $4; $ @$ ##F+K8I<<39.....5(((r)   c                      [         R                  S5      S[        [        [        4   4S j5       n SSS0S.n[         R	                  SU05      S   n[        U[        5      (       d   eUR                  S:X  d   eg	)
zhTest that validation can handle checks against arbitrary generic
types in function argument annotations.zmy_transform.v1rc   c                     SU l         U $ )Ntransformed_model)name)rc   s    r*   my_transform4test_handle_generic_model_type.<locals>.my_transform   s    (
r)   r[   z	Linear.v1)r[   rc   testr   N)r   layersr   r7   ri   
isinstancer   )r   rp   rc   s      r*   test_handle_generic_model_typer      s     )*E#s(O  + (9k2J
KC.v6EeU####::,,,,r)   c                      Sn [        5       R                  U 5      n[        R                  U5      nUS   S   nUR                  S:X  d   eg )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
    rc   chainzhashembed>>expand_window)r   from_strr   ri   r   )str_cfgrp   rq   rc   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&   rj   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_CFGr   r~   r   r,   r:   rD   r   r   boolrB   rP   r7   rT   good_catsie	ok_catsie
bad_catsieworst_catsierr   r   r   r   r!   r)   r*   <module>r      sl      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PQs   D' 'D?>D?