B
    .(b,                 @   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dddddgfZdd Zejjeddejjded  ed ddd Zejjedddd Zd d! Z es:G d"d# d#eZ!dS )$    N)TestCase)zeros)KnowledgeBaseWriter)Vectors)Language)Pipe)
is_python2   )make_tempdirc               C   s   t  S )N)r    r   r   T/home/dcms/DCMS/lib/python3.7/site-packages/spacy/tests/regression/test_issue5230.pynlp   s    r   c              C   s"   t ddd} dddg}t| |dS )N)      f)ZdtypecatZdogZrat)datakeys)r   r   )r   r   r   r   r   vectors   s    
r   c                 s0   G  fdddt  G  fdddt} | d 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 )N)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)srslyZmsgpack_dumpsZ
json_dumps)r   excludedisablekwargsr   r   r   to_bytes%   s    z/custom_pipe.<locals>.SerializableDummy.to_bytesc             S   s   | S )Nr   )r   
bytes_datar   r   r   r   
from_bytes(   s    z1custom_pipe.<locals>.SerializableDummy.from_bytesc             [   s   d S )Nr   )r   pathr   r    r   r   r   to_disk+   s    z.custom_pipe.<locals>.SerializableDummy.to_diskc             [   s   | S )Nr   )r   r$   r   r    r   r   r   	from_disk.   s    z0custom_pipe.<locals>.SerializableDummy.from_disk)
__name__
__module____qualname__r   tupler!   r#   r%   r&   __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 )N)r   modelvocab)r   r-   r,   r   )r   r   r   r   2   s
    z$custom_pipe.<locals>.MyPipe.__init__N)T)r'   r(   r)   r   r   )r   r   r   MyPipe1   s   r.   )objectr   )r.   r   )r   r   custom_pipe   s    	r0   c              C   s2   t  } | | d | d}|j| jd |S )Ntagger)pipeline)r   add_pipecreate_pipeget_pipebegin_trainingr2   )r   r1   r   r   r   r1   =   s
    
r1   c              C   sJ   t  } | | d | d}t| jdd}|| |j| jd |S )Nentity_linkerr   )entity_vector_length)r2   )	r   r3   r4   r5   r   r-   Zset_kbr6   r2   )r   r7   kbr   r   r   r7   H   s    

r7   c          
   C   sT   t  D}tjdd,}tjdtd | | ttdd |S Q R X W d Q R X d S )NT)recordalways)categoryc             S   s
   t | tS )N)
isinstanceResourceWarning)xr   r   r   <lambda>a       z.write_obj_and_catch_warnings.<locals>.<lambda>)r   warningscatch_warningsfilterwarningsr>   r%   listfilter)objdwarnings_listr   r   r   write_obj_and_catch_warnings[   s
    
rJ   z ResourceWarning needs Python 3.x)reasonrG   r   )idsc             C   s   t | }t|dkstd S )Nr   )rJ   lenAssertionError)rG   rI   r   r   r   test_to_disk_resource_warningd   s    rO   c              C   st   d } t  `}|d }zByt|} W n0 tk
rR } ztt| W d d }~X Y nX W d | rd|   X W d Q R X d S )Ntest)r   r   	Exceptionpytestfailstrclose)writerrH   r$   er   r   r   test_writer_with_path_py35k   s    $rX   c              C   s   t  } t| jdd}t }|d }y|| W n0 tk
rb } ztt| W d d }~X Y nX yt| jdd}|	| W n0 tk
r } ztt| W d d }~X Y nX W d Q R X d S )Nr   )r8   r9   )
r   r   r-   r   dumprQ   rR   rS   rT   Z	load_bulk)r   r9   rH   r$   rW   Z	kb_loadedr   r   r   !test_save_and_load_knowledge_basey   s     rZ   c               @   s   e Zd Zdd ZdS )!TestToDiskResourceWarningUnittestc          
   C   sR   t t }xD|D ]<}| j|d d" t|d }| t|d W d Q R X qW d S )Nr   )msgr   )zipobjects_to_testZsubTestrJ   assertEqualrM   )r   Z	scenariosZscenariorI   r   r   r   test_resource_warning   s
    
z7TestToDiskResourceWarningUnittest.test_resource_warningN)r'   r(   r)   r`   r   r   r   r   r[      s   r[   )"rB   Zunittestr   rR   r   numpyr   Zspacy.kbr   r   Zspacy.vectorsr   Zspacy.languager   Zspacy.pipeliner   Zspacy.compatr	   utilr   r   r   r0   r1   r7   r^   rJ   markZskipifZparametrizerO   rX   rZ   r[   r   r   r   r   <module>   s0   "	$