
    i                         d dl mZ d dlmZmZmZmZ d dlZd dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZmZmZmZ d d	lmZ d
dlmZ d Zd Zd Zd Zy)    )Path)AnyCallableDictIterableN)zeros)Config)Errorsutil)InMemoryLookupKB)SimpleFrozenListensure_pathload_model_from_configregistry)Vocab   )make_tempdirc                 f   t        |       }t        |       t               5 }t        |      }|j	                         s|j                          |dz  }|j                  t        |             t        | d      }|j                  t        |             d d d        t               y # 1 sw Y   xY w)Nkb   )vocabentity_vector_length)
_get_dummy_kb	_check_kbr   r   existsmkdirto_diskstrr   	from_disk)en_vocabkb1ddir_path	file_pathkb2s         x/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/tests/serialize/test_serialize_kb.pytest_serialize_kb_diskr'      s    

!CcN 
 &1q> NNtO	C	N#XAFc)n%& cN& &s   A2B''B0c                 \   t        | d      }|j                  ddg d       |j                  ddg d	       |j                  d
dg d       |j                  ddg d       |j                  ddd
gddg       |j                  dg dg d       |j                  dd
gdg       |S )Nr   )r   Q53!   )r      r   )entityfreqentity_vectorQ17r         r   Q007r1   r   r   r1   Q44V  )   r7   r7   double07皙?g?)aliasentitiesprobabilitiesguy)r)   r3   r/   r5   )333333?r>   g?r9   randomg      ?)r   
add_entity	add_alias)r   r   s     r&   r   r   #   s    	%a	8BMMRyMAMMQiM@MMayMAMMS	MBLLzUFOCQT:LVLL.*  
 LLx6(3%LHI    c                 j   | j                         dk(  sJ dD ]  }|| j                         v rJ  dD ]  }|| j                         vrJ  | j                         dk(  sJ dD ]  }|| j                         v rJ  dD ]  }|| j                         vrJ  t	        | j                  d      d 	      }t        |      d
k(  sJ |d   j                  dk(  sJ d|d   j                  cxk  rdk  sJ  J |d   j                  g dk(  sJ |d   j                  dk(  sJ d|d   j                  cxk  rdk  sJ  J |d   j                  dk(  sJ d|d   j                  cxk  rdk  sJ  J |d   j                  g dk(  sJ |d   j                  dk(  sJ d|d   j                  cxk  rdk  sJ  J y )Nr7   )r)   r/   r3   r5   ) Q0r   )r8   r=   r?   )nothingnessrD   randomnoiser8   c                     | j                   S N)entity_)xs    r&   <lambda>z_check_kb.<locals>.<lambda>E   s
    199 rB   )keyr   r   r3   g"@g
ףp=
@r4   gS㥛?gE?r2   r/   gףp=
?gGz @r0   gMbX?gB`"۹?)get_size_entitiesget_entity_stringsget_size_aliasesget_alias_stringssortedget_alias_candidateslenrJ   entity_freqr.   alias_
prior_prob)r   entity_stringalias_string
candidatess       r&   r   r   5   s   !Q&&&6 8 5 5 77778# <B$9$9$;;;;<  A%%%5 6r3355556: :2#7#7#9999: //
;ATUJz?aa=  F***:a=,,3t33333a=&&)333a=:---:a=++3e33333a=  E)))*Q-++2d22222a=&&)333a=:---:a=++3e33333rB   c            	      ~  	 d}  G d dt               	t        j                  d      dt        t        t
        g	f   f	fd       }t        j                  d      dt
        d	t
        dt        t        g	f   f	fd
       }t               j                  |       }t        |d      }|j                          |j                  d      }t        |j                        	k(  sJ |j                  j                  dk(  sJ |j                  j                  dk(  sJ t               5 }|j!                  |       t#        j$                  |      }|j                  d      }t        |j                        	k(  sJ |j                  j                  dk(  sJ |j                  j                  dk(  sJ 	 ddd       y# 1 sw Y   yxY w)z>Check that IO of a custom KB works fine as part of an EL pipe.a  
    [nlp]
    lang = "en"
    pipeline = ["entity_linker"]

    [components]

    [components.entity_linker]
    factory = "entity_linker"
    
    [components.entity_linker.generate_empty_kb]
    @misc = "kb_test.CustomEmptyKB.v1"
    
    [initialize]

    [initialize.components]

    [initialize.components.entity_linker]

    [initialize.components.entity_linker.kb_loader]
    @misc = "kb_test.CustomKB.v1"
    entity_vector_length = 342
    custom_field = 666
    c                   ^     e Zd Z fdZ e       fdee   fdZ e       fdee   fdZ xZ	S )9test_serialize_subclassed_kb.<locals>.SubInMemoryLookupKBc                 4    t         |   ||       || _        y rI   )super__init__custom_field)selfr   r   ra   	__class__s       r&   r`   zBtest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.__init__r   s    GU$89 ,DrB   excludec                 <    t        |      }|j                         s|j                  d       |j                         s)t	        t
        j                  j                  |            dt        ddf fd fd fd	fd
d}t        j                  |||       y)z[We overwrite InMemoryLookupKB.to_disk() to ensure that self.custom_field is stored as well.T)parentslocr$   returnNc                 J    t        j                  | dj                  i       y Nra   )srsly
write_jsonra   r$   rb   s    r&   serialize_custom_fieldszbtest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.to_disk.<locals>.serialize_custom_fields~   s      ^T=N=N,OPrB   c                 &    j                  |       S rI   )write_contentsprb   s    r&   rL   zStest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.to_disk.<locals>.<lambda>   s    d&9&9!&< rB   c                 N    j                   j                  j                  |       S rI   )r   stringsr   rr   s    r&   rL   zStest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.to_disk.<locals>.<lambda>   s    $***<*<*D*DQ*G rB   c                      |       S rI    )rs   ro   s    r&   rL   zStest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.to_disk.<locals>.<lambda>   s    +B1+E rB   contentszstrings.jsoncustom_fields)r   r   r   is_dir
ValueErrorr
   E928formatr   r   r   )rb   pathrd   	serializero   s   `   @r&   r   zAtest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.to_diskv   s    t$D;;=

4
(;;= !3!3!3!=>>Q4 QD Q = G!EI
 LLy'2rB   c                 j    t        |      }|j                         s)t        t        j                  j                  |            |j                         s)t        t        j                  j                  |            dt        ddf fd fd fdfdd	}t        j                  |||       y)
z]We overwrite InMemoryLookupKB.from_disk() to ensure that self.custom_field is loaded as well.rg   r$   ri   Nc                 @    t        j                  |       d   _        y rk   )rl   	read_jsonra   rn   s    r&   deserialize_custom_fieldszftest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.from_disk.<locals>.deserialize_custom_fields   s    $)OOI$>~$N!rB   c                 &    j                  |       S rI   )read_contentsrr   s    r&   rL   zUtest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.from_disk.<locals>.<lambda>   s    d&8&8&; rB   c                 N    j                   j                  j                  |       S rI   )r   ru   r   rr   s    r&   rL   zUtest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.from_disk.<locals>.<lambda>   s    $***<*<*F*Fq*I rB   c                      |       S rI   rw   )rs   r   s    r&   rL   zUtest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.from_disk.<locals>.<lambda>   s    +DQ+G rB   rx   )r   r   r|   r
   E929r~   r{   r}   r   r   r   )rb   r   rd   deserializer   s   `   @r&   r   zCtest_serialize_subclassed_kb.<locals>.SubInMemoryLookupKB.from_disk   s    t$D;;= !3!3!3!=>>;;= !3!3!3!=>>OT Od O < I!G<K
 NN4g6rB   )
__name__
__module____qualname__r`   r   r   r   r   r   __classcell__)rc   s   @r&   SubInMemoryLookupKBr]   q   s:    	- :J9K 	3# 	3$ <L;M 	78C= 	7rB   r   zkb_test.CustomEmptyKB.v1ri   c                  ,    dt         dt        ffd} | S )Nr   r   c                      | |d      S )Nr   r   r   ra   rw   )r   r   r   s     r&   empty_kb_factoryzOtest_serialize_subclassed_kb.<locals>.empty_custom_kb.<locals>.empty_kb_factory   s    &%9 rB   )r   int)r   r   s    r&   empty_custom_kbz5test_serialize_subclassed_kb.<locals>.empty_custom_kb   s    	E 	 	  rB   zkb_test.CustomKB.v1r   ra   c                       fd}|S )Nc                 V     |       }|j                  ddt                     |S )Nr   random_entityg        )r@   r   )r   r   r   ra   r   s     r&   custom_kb_factoryzJtest_serialize_subclassed_kb.<locals>.custom_kb.<locals>.custom_kb_factory   s3    $%9)B
 MM/36J0KLIrB   rw   )r   ra   r   r   s   `` r&   	custom_kbz/test_serialize_subclassed_kb.<locals>.custom_kb   s    	 ! rB   T)	auto_fillentity_linkerr6   i  N)r   r   miscr   r   r   r	   from_strr   
initializeget_pipetyper   r   ra   r   r   r   load_model_from_path)
config_stringr   r   confignlpr   tmp_dirnlp2entity_linker2r   s
            @r&   test_serialize_subclassed_kbr   U   s   M2'7. '7R ]]-. Xucl4G&GH   /  ]]()!!!14!	5'..	/! *! X}-F
 4
8CNNLL1M  !%888800C777((C/// 
 57G((17N%%&*====  55<<<  --4445 5 5s   !BF33F<)pathlibr   typingr   r   r   r   rl   numpyr   	thinc.apir	   spacyr
   r   spacy.kb.kb_in_memoryr   
spacy.utilr   r   r   r   spacy.vocabr   r   r'   r   r   r   rw   rB   r&   <module>r      s?     0 0     2 V V  &$4@p5rB   