o
    i                     @   s  d dl Z d dlmZ d dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d	d
lmZ dd Zdd Zdd Zdd Zdd Zeeeeegg dfZdd Zejjded  ed ddd Zdd Zdd  ZG d!d" d"eZ dS )#    N)TestCase)zeros)InMemoryLookupKBWriterLanguage)TrainablePipe)Vectors)Vocab   )make_tempdirc                   C   s   t  S Nr    r   r   _/home/ubuntu/.local/lib/python3.10/site-packages/spacy/tests/serialize/test_resource_warning.pynlp   s   r   c                  C   s    t ddd} g d}t| |dS )N)      fdtype)catdogratdatakeys)r   r	   r   r   r   r   vectors   s   r   c                     s0   G  fddd G  fdddt } | t S )Nc                       sR   e Zd Z fddZe dfddZdd Ze fdd	Ze fd
dZ  Z	S )z&custom_pipe.<locals>.SerializableDummyc                    s$   |r|| _ nd | _ t |   d S r   )cfgsuper__init__)selfr   )SerializableDummy	__class__r   r   r      s   z/custom_pipe.<locals>.SerializableDummy.__init__Nc                 [   s   t dt d iS )Ndummy)srslymsgpack_dumps
json_dumps)r    excludedisablekwargsr   r   r   to_bytes%   s   z/custom_pipe.<locals>.SerializableDummy.to_bytesc                 S      | S r   r   )r    
bytes_datar'   r   r   r   
from_bytes(      z1custom_pipe.<locals>.SerializableDummy.from_bytesc                 [   s   d S r   r   r    pathr'   r)   r   r   r   to_disk+   r.   z.custom_pipe.<locals>.SerializableDummy.to_diskc                 [   r+   r   r   r/   r   r   r   	from_disk.   r.   z0custom_pipe.<locals>.SerializableDummy.from_disk)
__name__
__module____qualname__r   tupler*   r-   r1   r2   __classcell__r   r!   )r"   r   r!      s    r!   c                       s   e Zd Zd fdd	ZdS )zcustom_pipe.<locals>.MyPipeTc                    s$   |r|| _ nd | _   | _|| _d S r   )r   modelvocab)r    r:   r9   r   r8   r   r   r   2   s
   
z$custom_pipe.<locals>.MyPipe.__init__N)T)r3   r4   r5   r   r   r8   r   r   MyPipe1   s    r;   )r   r
   )r;   r   r8   r   custom_pipe   s   
	r<   c                  C   s&   t  } | d}|d |   |S )NtaggerA)r   add_pipe	add_label
initialize)r   r=   r   r   r   r=   =   s
   

r=   c                  C   s.   t  } dd }| d}|| |   |S )Nc                 S   s&   t | dd}|ddtddd |S )Nr   entity_vector_lengthtestg        )r   r   r   )r   
add_entityr   )r:   kbr   r   r   	create_kbK   s   z entity_linker.<locals>.create_kbentity_linker)r   r?   set_kbrA   )r   rG   rH   r   r   r   rH   H   s   

rH   )r   r   r<   r=   rH   c              	   C   s   t  ;}tjdd$}tjdtd | | ttdd |W  d    W  d    S 1 s1w   Y  W d    d S 1 sAw   Y  d S )NT)recordalways)categoryc                 S   s
   t | tS r   )
isinstanceResourceWarning)xr   r   r   <lambda>e   s   
 z.write_obj_and_catch_warnings.<locals>.<lambda>)r   warningscatch_warningsfilterwarningsrN   r1   listfilter)objdwarnings_listr   r   r   write_obj_and_catch_warnings_   s   
"rY   obj_factoryr   )idsc                 C   s"   |  }t |}t|dksJ d S )Nr   )rY   len)rZ   rV   rX   r   r   r   test_to_disk_resource_warningh   s   r]   c                  C   s   d } t  >}|d }z(zt|} W n ty* } ztt| W Y d }~nd }~ww W | r2|   n| r:|   w w W d    d S 1 sFw   Y  d S )NrD   )r   r   	Exceptionpytestfailstrclose)writerrW   r0   er   r   r   test_writer_with_path_py35o   s$   
"re   c                  C   s   t  } t| jdd}t ^}|d }z|| W n ty2 } ztt| W Y d }~nd }~ww zt| jdd}|	| W n tyZ } ztt| W Y d }~nd }~ww W d    d S W d    d S 1 snw   Y  d S )Nr   rB   rF   )
r   r   r:   r   r1   r^   r_   r`   ra   r2   )r   rF   rW   r0   rd   	kb_loadedr   r   r   !test_save_and_load_knowledge_base|   s*   "rg   c                   @   s   e Zd Zdd ZdS )!TestToDiskResourceWarningUnittestc              	   C   sz   dd t d D }t d }t||}|D ]&\}}| j|d t|}| t|d W d    n1 s5w   Y  qd S )Nc                 S   s   g | ]}| qS r   r   ).0rO   r   r   r   
<listcomp>   s    zKTestToDiskResourceWarningUnittest.test_resource_warning.<locals>.<listcomp>r   r   )msg)objects_to_testzipsubTestrY   assertEqualr\   )r    itemsnames	scenariositemnamerX   r   r   r   test_resource_warning   s   
z7TestToDiskResourceWarningUnittest.test_resource_warningN)r3   r4   r5   ru   r   r   r   r   rh      s    rh   )!rQ   unittestr   r_   r$   numpyr   spacy.kb.kb_in_memoryr   r   spacy.languager   spacy.pipeliner   spacy.vectorsr	   spacy.vocabr
   utilr   r   r   r<   r=   rH   rl   rY   markparametrizer]   re   rg   rh   r   r   r   r   <module>   s2    "	
