
    h8                     d   S SK r S SKJrJr  S SKJr  S SK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 S	KJr  S S
KJr  S SKJr  \ R.                  S 5       r\ R.                  S 5       rS rS rS rS rS rS r\ R@                  RC                  S\S\4\S\4/5      S 5       r"S r#S r$S r%S r&g)    N)Adamfix_random_seed)registry)NORM)Language)DependencyParserEntityRecognizer)DEFAULT_PARSER_MODEL)DEFAULT_NER_MODEL)Doc)Example)Vocabc                  "    [        [        S 0S9$ )Nc                     U $ N )ss    [/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/parser/test_add_label.py<lambda>vocab.<locals>.<lambda>   s    1    )lex_attr_getters)r   r   r   r   r   vocabr      s    4"566r   c                 \    S[         0n[        R                  " USS9S   n[        X5      nU$ )NmodelTvalidate)r
   r   resolver   )r   cfgr   parsers       r   r    r       s3    (
)CS409Ee+FMr   c                     g r   r   r    s    r   test_init_parserr#      s    r   c                 4  ^  [        S5        T R                  S5        T R                  U 4S j5        [        S5      n[	        S5       HK  n0 n[        T R                  / SQS9n/ SQ/ S	QS
.n[        R                  " XE5      nT R                  U/XS9  MM     T $ )N   leftc                     > [        T 5      /$ r   )_parser_exampler"   s   r   r   _train_parser.<locals>.<lambda>#   s    v67r   MbP?   abcdwordsr%   r%      r4   )r&   ROOTr&   r5   headsdepssgdlosses)
r   	add_label
initializer   ranger   r   r   	from_dictupdate)r    r:   ir;   docgoldexamples   `      r   _train_parserrE       s    A
V
78
u+C1X&,,&:;%/OP##C.wiS8  Mr   c                 l    [        U R                  / SQS9n/ SQ/ SQS.n[        R                  " X5      $ )Nr,   r1   r3   )rightr5   r&   r5   r6   r   r   r   r?   )r    rB   rC   s      r   r(   r(   /   s/    
fll"6
7C!+LMDS''r   c                 f    [        U R                  / SQS9nSSS/0n[        R                  " X5      $ )N)JoelovesvisitingLondonduringtheweekendr1   entities)r   r4   PERSON)      LOCrH   )nerrB   rC   s      r   _ner_examplerW   5   s9    
		PC )?;<DS''r   c                 >   [        U 5      n U R                  S5        [        S5      n[        S5       H  n0 nU R	                  [        U 5      /XS9  M!     [        U R                  / SQS9nU " U5      nUS   R                  S:X  d   eUS   R                  S	:X  d   eg )
NrG   r*   d   r9   r,   r1   r      r&   )	rE   r<   r   r>   r@   r(   r   r   dep_)r    r:   rA   r;   rB   s        r   test_add_labelr\   >   s    6"F
W
u+C3Zv./SH  fll"6
7C
+Cq6;;'!!!q6;;&   r   c                     ^ S[         0n [        R                  " U SS9S   n[        [	        5       U5      mTR                  S5        TR                  S5        TR                  S5        TR                  U4S j5        [        [	        5       U5      nUR                  R                  S   " UR                  TR                  R                  5        UR                  TR                  5       5        TR                  R                  UR                  R                  :X  d   e[        TR                  R                  5       H=  nTR                  R                  U5      UR                  R                  U5      :X  a  M=   e   g )	Nr   Tr   CBAc                     > [        T 5      /$ r   )rW   )ner1s   r   r   7test_add_label_deserializes_correctly.<locals>.<lambda>R   s    \$/0r   resize_output)r   r   r   r	   r   r<   r=   r   attrsmovesn_moves
from_bytesto_bytesr>   get_class_name)r   r   ner2rA   rb   s       @r   %test_add_label_deserializes_correctlyrl   K   s   %
&CS409EEGU+DNN3NN3NN3OO01EGU+D 	JJ_%djj$**2D2DEOODMMO$::!3!33334::%%&zz((+tzz/H/H/KKKK 'r   zpipe_cls,n_moves,model_configr+      c                 .   / SQn[         R                  " SU0SS9S   nU " [        5       U5      nU H  nUR                  U5        M     [	        UR
                  5      [	        U5      U-  :X  d   e[        [        UR                  5      5      nXs:X  d   eg)zTest that added labels are returned correctly. This test was added to
test for a bug in DependencyParser.labels that'd cause it to fail when
splitting the move names.
r`   r_   r^   r   Tr   N)	r   r   r   r<   len
move_namessortedlistlabels)pipe_clsrg   model_configrt   r   pipelabelpipe_labelss           r   test_add_label_get_labelrz   ]   s     Fg|4tDWMEEGU#Du t3v;#8888dkk*+K   r   c                  F   [        5       n U R                  S5      nS H  nUR                  U5        M     U R                  5         [	        U R
                  SS/SS/S9nU" U5        U Vs/ s H  oDR                  PM     snSS	/:X  d   eSUR                  ;   d   eg s  snf )
NrV   ro   helloworldB-DOr2   entsD )r   add_piper<   r=   r   r   	ent_type_rt   )nlprV   rx   rB   ts        r   +test_ner_labels_added_implicitly_on_predictr   s   s    
*C
,,u
C e !NN
cii1
ECH!$%AKK%#r222#** &s   +Bc                     [        5       n U R                  S5      nS H  nUR                  U5        M     U R                  5         [	        U R
                  SS/SS/S9nUR                  U/SS	9  S
UR                  ;   d   eg )Nbeam_nerro   r|   r}   r~   r   r       )
beam_widthr   )r   r   r<   r=   r   r   
beam_parsert   r   rV   rx   rB   s       r   .test_ner_labels_added_implicitly_on_beam_parser      sv    
*C
,,z
"C e !NN
cii1
ECNNC5RN(#**r   c                     [        5       n U R                  S5      nS H  nUR                  U5        M     U R                  5         [	        U R
                  SS/SS/S9nUR                  U/5        SUR                  ;   d   eg )	Nr   ro   r|   r}   r~   r   r   r   )r   r   r<   r=   r   r   greedy_parsert   r   s       r   0test_ner_labels_added_implicitly_on_greedy_parser      st    
*C
,,z
"C e !NN
cii1
ECcU#**r   c                  v   [        5       n U R                  S5      nS H  nUR                  U5        M     U R                  5         [	        U R
                  SS/SS/S9n[        U R                  UR                  5      U5      nSUR                  ;  d   eU R                  U/5        SUR                  ;   d   eg )	NrV   ro   r|   r}   r~   r   r   r   )r   r   r<   r=   r   r   r   make_doctextrt   r@   )r   rV   rx   rB   rD   s        r   *test_ner_labels_added_implicitly_on_updater      s    
*C
,,u
C e !NN
cii1
ECcll388,c2Gcjj   JJy#**r   )'pytest	thinc.apir   r   spacyr   spacy.attrsr   spacy.languager   spacy.pipeliner   r	   spacy.pipeline.dep_parserr
   spacy.pipeline.nerr   spacy.tokensr   spacy.trainingr   spacy.vocabr   fixturer   r    r#   rE   r(   rW   r\   rl   markparametrizerz   r   r   r   r   r   r   r   <module>r      s     +   # = : 0  "  7 7  	((
!L$ #	123	1/0!!	
r   