
    h                         S SK r S SKrS SKrS SKrS SK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S j5       rS rS	 rS
 rS rS rS rS rS rg)    N)get_current_ops)Doc)split_bilu_label)make_tempdir)Vocabc              #   \   #    [         R                  " U S9nUv   UR                  5         g 7f)N)mode)tempfileTemporaryFileclose)r	   fs     J/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/util.pymake_tempfiler      s#     D)A
GGGIs   *,c                     [        5       n/ nSn[        SU S-   5       HF  n[        X3U-   5       Vs/ s H  n[        U5      PM     nnUR                  [	        XS95        X4-  nMH     U$ s  snf )Nr      words)r   rangestrappendr   )
batch_sizevocabdocsstartsizeinumberss          r   	get_batchr      sq    GEDEaa( $)#=>#=a3q6#=>C-. ) K ?s   A*c                 |    [        5       n[        SU 5       Vs/ s H  n[        U5      PM     nn[        XS9$ s  snf )Nr   r   )r   r   r   r   )n_wordsr   r   r   s       r   get_random_docr!   #   s:    GE$Q010!s1v0G1u$$ 2s   9c                     U H)  nSU;   d  M  [        U5      u  pEU R                  U5        M+     U R                  U5       nU H  nUR                  U5        M     SSS5        g! , (       d  f       g= f)zTPerform a series of pre-specified transitions, to put the parser in a
desired state.-N)r   	add_labelstep_through
transition)parserdocsequenceaction_namemovelabelstepwiser&   s           r   apply_transition_sequencer.   *   sf      +*;7KDU#   
		S	!X"J
+ # 
"	!	!s   A%%
A3c                 z    [        US   S   5      nU R                  US9  U H  u  p4U R                  X4S9  M     U $ )zqAdd list of vector tuples to given vocab. All vectors need to have the
same length. Format: [("text", [1, 2, 3])]r   r   )width)vector)lenreset_vectors
set_vector)r   vectorslengthwordvecs        r   add_vecs_to_vocabr9   6   sI     AF	f%	* L    c                 B   [        5       nUR                  UR                  U 5      5      nUR                  UR                  U5      5      n[        R                  " X45      [        R
                  R                  U5      [        R
                  R                  U5      -  -  $ )z Get cosine for two given vectors)r   to_numpyasarraynumpydotlinalgnorm)vec1vec2OPSv1v2s        r   
get_cosinerG   @   so    

C	ckk$'	(B	ckk$'	(B99R 1 1" 58I8I"8M MNNr:   c                    U  Vs/ s H  o"R                   PM     snU Vs/ s H  o"R                   PM     sn:X  d   eU  Vs/ s H  o"R                  PM     snU Vs/ s H  o"R                  PM     sn:X  d   eU  Vs/ s H  o"R                  PM     snU Vs/ s H  o"R                  PM     sn:X  d   eU  Vs/ s H  o"R                  R                  PM     snU Vs/ s H  o"R                  R                  PM     sn:X  d   eU  Vs/ s H  o"R
                  PM     snU Vs/ s H  o"R
                  PM     sn:X  d   eU  Vs/ s H  o"R                  PM     snU Vs/ s H  o"R                  PM     sn:X  d   eU  Vs/ s H  o"R                  PM     snU Vs/ s H  o"R                  PM     sn:X  d   eU  Vs/ s H  o"R                  PM     snU Vs/ s H  o"R                  PM     sn:X  d   e[        U R                  UR                  5       Hu  u  p4UR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  a  Mu   e   gs  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )ziCompare two Doc objects and assert that they're equal. Tests for tokens,
tags, dependencies and entities.N)orthpostagheadr   depis_sent_startent_typeent_iobzipentsr   endr,   kb_id)doc1doc2tent1ent2s        r   assert_docs_equalrZ   H   s1    !!DqFFD!d%;dffd%;;;; 4aEE4 D$9DqUUD$9999 4aEE4 D$9DqUUD$9999"#dFFHHd#$'?$Q$'???? 4aEE4 D$9DqUUD$9999%)*TOOT*.M1.MMMM $%1JJ%d)Cd**d)CCCC#$t!IIt$D(ADqD(AAAA$))TYY/
zzTZZ'''xx488###zzTZZ'''zzTZZ'''	 0 "%; $9 $9#'? $9*.M%)C$(As^   JJJJ=J#J(9J-J2	J7$J<K KKK=KKc                 t   [         R                  " U 5      n[         R                  " U5      n[        UR                  5       5      [        UR                  5       5      :X  d   e[	        [        UR                  5       5      [        UR                  5       5      5       H  u  u  pEu  pgXF:X  d   eXW:X  a  M   e   g)z2Assert that two packed msgpack messages are equal.N)srslymsgpack_loadssortedkeysrQ   items)b1b2msg1msg2k1rE   k2rF   s           r   assert_packed_msg_equalrg   ]   s    r"Dr"D$))+&"5555!&"6tzz|8LM(2xxxx Nr:   c                 2    [         R                  " SSU 5      $ )Nz\s+ )resub)ss    r   normalize_whitespacerm   g   s    66&#q!!r:   )r)
contextlibrj   r
   r>   r\   	thinc.apir   spacy.tokensr   spacy.trainingr   
spacy.utilr   spacy.vocabr   contextmanagerr   r   r!   r.   r9   rG   rZ   rg   rm    r:   r   <module>rw      sf     	    %  + #   
%	,O(*"r:   