
    h@%                     D   S SK r 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  SSKJr  \R                  S	 5       r\R                  S
 5       r\R                  S 5       r\R                  S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS r g)    N)registryutilEnglish)AttributeRuler)Doc)Example   )make_tempdirc                      [        5       $ Nr        b/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/pipeline/test_attributeruler.pynlpr      s
    9r   c                  N    SS0/SS0//SSS.S.SS0//S	S
0S.SS0//SS0SS./$ NORTHa
irrelevanttheCase=Nom|Number=PlurLEMMAMORPHpatternsattrstestr   catr   Case=Nom|Number=Singr   )r   r   indexr   r   r   r   pattern_dictsr#      sm     "3-FL+A*BC$/EF	

 '()We4DE "6*+,56	
 r   c                      SSS.SSS.S.$ )NPUNCTperi)POS	PunctTypecomm).,r   r   r   r   tag_mapr,   $   s     6262 r   c                      SSSSSS.00$ )NDTr   DETr   Nom)r'   r   Caser   r   r   r   morph_rulesr2   ,   s    5%#uEFGGr   c                 P   [        U R                  / SQ/ SQS9nU " U5      n[        [        U5      5       Hm  nUS:X  a3  X   R                  S:X  d   e[        X   R                  5      S:X  d   eM<  X   R                  S:X  d   e[        X   R                  5      S:X  a  Mm   e   g )NThisisr   r   r*   r.   VBZr.   NNr*   wordstags   r%   zPunctType=peri )r   vocabrangelenpos_strmorphrulerdocis      r   check_tag_maprI   1   s    
.+C
 *C3s8_66;;')))sv||$(88886;;"$$$sv||$*** r   c                 ~   [        U R                  / SQ/ SQS9nU " U5      n[        [        U5      5       H  nUS:w  a3  X   R                  S:X  d   e[        X   R                  5      S:X  d   eM<  US   R                  S:X  d   eUS   R                  S:X  d   e[        US   R                  5      S:X  a  M   e   g )	N)r5   r6   r   r   r*   r7   r:   r
   r>   r/   r   zCase=Nom)r   r?   r@   rA   rB   rC   rD   lemma_rE   s      r   check_morph_rulesrL   A   s    
0+C
 *C3s8_66;;"$$$sv||$***q6;;%'''q6==C'''s1v||$
222 r   c                    U R                  S5      nU H  nUR                  " S0 UD6  M     U " S5      nUS   R                  S:X  d   e[        US   R                  5      S:X  d   eUS   R                  S:X  d   e[        US   R                  5      S:X  d   eUR                  S	5      (       d   eUR                  S
5      (       d   eg )Nattribute_rulerThis is a test.r
   r   r      r    r!   r   r   r   )add_pipeaddrK   rC   rD   has_annotation)r   r#   r   prG   s        r   test_attributeruler_initrU   R   s    &'A	

 

 Cq6==E!!!s1v|| 6666q6==E!!!s1v|| 6666g&&&&g&&&&r   c                    U R                  S5      nUR                  S US9  U " S5      nUS   R                  S:X  d   e[        US   R                  5      S:X  d   eUS   R                  S	:X  d   e[        US   R                  5      S
:X  d   eUR                  S5      (       d   eUR                  S5      (       d   eU R                  S5        [        R                  " S5      S 5       nSSS00U R                  S   S   S'   U R                  S5        U R                  5         U " S5      nUS   R                  S:X  d   e[        US   R                  5      S:X  d   eUS   R                  S	:X  d   e[        US   R                  5      S
:X  d   eUR                  S5      (       d   eUR                  S5      (       d   eg )NrN   c                      / $ r   r   r   r   r   <lambda>3test_attributeruler_init_patterns.<locals>.<lambda>b       Rr   r   rO   r
   r   r   rP   r    r!   r   r   attribute_ruler_patternsc                  N    SS0/SS0//SSS.S.SS0//S	S
0S.SS0//SS0SS./$ r   r   r   r   r   r\   Ctest_attributeruler_init_patterns.<locals>.attribute_ruler_patternsm   sm      &sm_/E.FG#(3IJ
 #F+,-%8HI  &v./0!#9:
 	
r   r   @misc
initialize
components)
rQ   r`   rK   rC   rD   rS   remove_piper   miscconfig)r   r#   rF   rG   r\   s        r   !test_attributeruler_init_patternsre   _   s   LL*+E	Z-8

 Cq6==E!!!s1v|| 6666q6==E!!!s1v|| 6666g&&&&g&&&&OO%& ]]-.
 /
" 	W89ACJJ|\*+<= LL"#NN

 Cq6==E!!!s1v|| 6666q6==E!!!s1v|| 6666g&&&&g&&&&r   c                    U R                  S5      n[        UR                  5      (       a   eUR                  U5        [        UR                  5      (       d   eUR	                  S 5        [        UR                  5      (       a   eg)z)Test that initialization clears patterns.rN   c                      / $ r   r   r   r   r   rX   0test_attributeruler_init_clear.<locals>.<lambda>   rZ   r   N)rQ   rA   matcheradd_patternsr`   )r   r#   rF   s      r   test_attributeruler_init_clearrk      so    LL*+E5==!!!!	}%u}}	Z 5==!!!!!r   c                 &   U R                  S5      nUR                  S US9  U " S5      nUS   R                  S:X  d   e[        US   R                  5      S:X  d   eUS   R                  S	:X  d   e[        US   R                  5      S
:X  d   eU R                  S5      n[        R                  " US/ SQ05      /nU R                  U5      nUS   [        R                  " S5      :X  d   eUS   b   eU R                  S5        [        R                  " S5      S 5       nU R                  SSSS00S9nUR                  S US9  U R                  USS0S9nUS   S:X  d   eSU;   d   eSU;  d   eU R                  USS0S9nUS   S:X  d   eg )NrN   c                      / $ r   r   r   r   r   rX   +test_attributeruler_score.<locals>.<lambda>   rZ   r   r[   rO   r
   r   r   rP   r    r!   lemmas)thisr6   r   r    r*   	lemma_accg?	morph_acczweird_scorer.v1c                      S n U $ )Nc                 
    SU0$ )Nweird_scorer   )examplesru   kwargss      r   weird_scorerJtest_attributeruler_score.<locals>.make_weird_scorer.<locals>.weird_scorer   s    !;//r   r   )rx   s    r   make_weird_scorer4test_attributeruler_score.<locals>.make_weird_scorer   s    	0 r   scorerr_   )rd   c                      / $ r   r   r   r   r   rX   rn      rZ   r   ru   g|Pk?)
scorer_cfg	token_accgy?)rQ   r`   rK   rC   rD   make_docr	   	from_dictevaluatepytestapproxrb   r   rc   )r   r#   rF   rG   dev_examplesscoresrz   s          r   test_attributeruler_scorer      s   LL*+E	Z-8

 Cq6==E!!!s1v|| 6666q6==E!!!s1v|| 6666
,,(
)C%%cH6U+VWXL\\,'F+&--"4444+&&&OO%& ]]$% & LL8g7H-I"J  E 
Z-8\\,M73K\LF- G+++&   f$$$\\,M73K\LF- G+++r   c                     [        U R                  5      nSS0//SS0S.SS0//SS0S./nUR                  U5        [        U R                  / SQ/ SQS	9nU" U5      nUS
   R                  S:X  d   eg )NTAGr8   r'   VERBr   NOUNr4   r7   r:      )r   r?   rj   r   rB   )r   r   r   rG   s       r   test_attributeruler_rule_orderr      s    syy!Au~&'5&/Bu~&'5&/BH NN8
		.+C
 C&Cq6;;&   r   c                 f    [        U R                  5      nUR                  U5        [        U5        g r   )r   r?   load_from_tag_maprI   r   r,   rF   s      r   test_attributeruler_tag_mapr      s&    399%E	G$%r   c                 ^    U R                  S5      nUR                  S US9  [        U5        g )NrN   c                      / $ r   r   r   r   r   rX   8test_attributeruler_tag_map_initialize.<locals>.<lambda>   rZ   r   )r,   )rQ   r`   rI   r   s      r   &test_attributeruler_tag_map_initializer      s,    LL*+E	Z1%r   c                 f    [        U R                  5      nUR                  U5        [        U5        g r   )r   r?   load_from_morph_rulesrL   r   r2   rF   s      r   test_attributeruler_morph_rulesr      s&    399%E	,er   c                 ^    U R                  S5      nUR                  S US9  [        U5        g )NrN   c                      / $ r   r   r   r   r   rX   <test_attributeruler_morph_rules_initialize.<locals>.<lambda>   rZ   r   )r2   )rQ   r`   rL   r   s      r   *test_attributeruler_morph_rules_initializer      s,    LL*+E	Z[9er   c                    U R                  S5      nUR                  SS0SS0//SSS.SS	9  UR                  SS
0SS0//SSS.SS	9  UR                  SS0SS0//SS0SS	9  SnU " U5      n[        [        U5      5       H  nUS:X  a3  X4   R                  S:X  d   e[        X4   R                  5      S:X  d   eM<  US:X  a3  X4   R                  S:X  d   e[        X4   R                  5      S:X  d   eMu  US:X  a  X4   R                  S:X  d   eM  [        X4   R                  5      S:X  a  M   e   UR                  SS0SS0//SS0SS	9  [        R                  " [        5         U " U5      nS S S 5        UR                  SS0SS0//SS0SS	9  [        R                  " [        5         U " U5      nS S S 5        g ! , (       d  f       NT= f! , (       d  f       g = f)NrN   r   r   r   r   r   r   r   )r"   r5   r6   wasr!   r   r   r    rO   r
   rP   r>   
   )
rQ   rR   r@   rA   rK   rC   rD   r   raises
ValueError)r   r   textrG   rH   s        r   test_attributeruler_indicesr      s   &'AEE3-&&)	*+"89 
 
 EE6
VTN	+,"89 
 
 EEVSMFF+,
-/?rEJD
d)C3s8_66==E)))sv||$(>>>>!V6==E)))sv||$(>>>>!V6==E)))sv||$***  EEVSMFF+,
-/?qEI	z	"$i 
# EEVSMFF+,
-/?rEJ	z	"$i 
#	"	 
#	" 
#	"s   &	F=+	G=
G
Gc                    U R                  S5      nUR                  U5        [        XR                  5       HG  u  p4US   US   :X  d   eUS   US   :X  d   eUR	                  S5      (       d  M9  US   US   :X  a  MG   e   g )NrN   r   r   r"   )rQ   rj   zipr   get)r   r#   r   p1p2s        r   !test_attributeruler_patterns_propr   	  s    &'ANN=!mZZ0*~J///'{bk)))66'??g;"W+---	 1r   c                    U R                  S5      nUR                  U5        Sn/ SQnU " U5      n[        U R                  5      R	                  UR                  5       5      nUR                  5       UR                  5       :X  d   eU" U R                  U5      5      n[        R                  " UR                  U5      UR                  U5      5        UR                  UR                  :X  d   e[        5        nU R                  U5        [        R                  " U5      n	U	" U5      n
U	R                  S5      R                  5       UR                  5       :X  d   e[        R                  " UR                  U5      U
R                  U5      5      (       d   eUR                  U	R                  S5      R                  :X  d   e S S S 5        g ! , (       d  f       g = f)NrN   rO   )r   r   r   )rQ   rj   r   r?   
from_bytesto_bytesr   numpyarray_equalto_arrayr   r   to_diskr   load_model_from_pathget_pipe)r   r#   r   r   r   rG   
a_reloadeddoc1tmp_dirnlp2doc2s              r   test_attributeruler_serializer     sc   &'ANN=!D&E
d)C		*55ajjlCJ::<:..0000cll4()D	cll5)4==+?@::,,,,,	7G((1Dz}}./88:ajjlJJJ  e!4dmmE6JKKKKzzT]]+<=FFFFF 
s   9C
G
G)!r   r   spacyr   r   spacy.lang.enr   spacy.pipeliner   spacy.tokensr   spacy.trainingr	   r   fixturer   r#   r,   r2   rI   rL   rU   re   rk   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s        ! )  "     "   H H+ 3"
'*'Z"#,L! "J.Gr   