B
    /`                 @   s`  d dl Z d dlZd dlZd dlZd dlmZmZ d dlZd dlm	Z	m
Z
 d dlmZmZmZmZmZmZ d dlmZ ejrd dlmZ eeZdZdZd	Zd
ZdZdZdZ dZ!eehZ"edd edd edd edd edd edd edd edd edd i	Z#d(eee ddddZ$eed dd d!Z%d)eee ed d"d#d$Z&eed%d&d'Z'dS )*    N)OptionalText)MarkdownReaderNLGMarkdownReader)DIALOGFLOW_AGENTDIALOGFLOW_ENTITIESDIALOGFLOW_ENTITY_ENTRIESDIALOGFLOW_INTENTDIALOGFLOW_INTENT_EXAMPLESDIALOGFLOW_PACKAGE)TrainingData)TrainingDataReaderZwitZluisZrasa_nluZmdZrasa_ymlZunkznlg.mdjsonc             C   s   d| kod| kS )NZ
utterancesluis_schema_version )jsfnr   r   T/home/dcms/DCMS/lib/python3.7/site-packages/rasa/shared/nlu/training_data/loading.py<lambda>$       r   c             C   s   d| kS )Nr   r   )r   r   r   r   r   r   %   r   c             C   s   d| kS )NZrasa_nlu_datar   )r   r   r   r   r   r   &   r   c             C   s   d| kS )NZsupportedLanguagesr   )r   r   r   r   r   r   '   r   c             C   s   d| kot | dkS )Nversion   )len)r   r   r   r   r   r   (   r   c             C   s   d| kS )N	responsesr   )r   r   r   r   r   r   )   r   c             C   s   d| kS )NZisEnumr   )r   r   r   r   r   r   *   r   c             C   s   d|kS )NZ
_usersays_r   )r   r   r   r   r   r   +   r   c             C   s   d|kS )NZ	_entries_r   )r   r   r   r   r   r   ,   r   enr   )resource_namelanguagereturnc                s   t j| std|  dt j| r0| g}ntjjj	| } fdd|D }dd |D }t
|dkrtt }n,t
|dkr|d }n|d j|dd  }|S )	z`Load training data from disk.

    Merges them if loaded from disk and multiple files are found.zFile 'z' does not exist.c                s   g | ]}t | qS r   )_load).0f)r   r   r   
<listcomp><   s    zload_data.<locals>.<listcomp>c             S   s   g | ]}|r|qS r   r   )r   Zdsr   r   r   r!   =   s    r   r   N)ospathexists
ValueErrorisfilerasasharedutilsioZ
list_filesr   r   merge)r   r   filesZ	data_setsZtraining_datar   )r   r   	load_data0   s    
r-   r   )fformatr   c       	      C   s   ddl m}m}m}m}m}m}m} d}| tkr8| }n^| t	krH| }nN| t
krX| }n>| tkrh| }n.| tkrx| }n| tkr| }n| tkr| }|S )z@Generates the appropriate reader class based on the file format.r   )RasaYAMLReaderr   	WitReader
LuisReader
RasaReaderDialogflowReaderr   N)%rasa.shared.nlu.training_data.formatsr/   r   r0   r1   r2   r3   r   LUISWITDIALOGFLOW_RELEVANTRASAMARKDOWNMARKDOWN_NLG	RASA_YAML)	r.   r/   r   r0   r1   r2   r3   r   readerr   r   r   _reader_factoryH   s"    $
r=   )filenamer   r   c             C   sD   t | }|tkr td|  dt|}|r<|j| ||dS dS dS )z,Loads a single training data file from disk.zUnknown data format for file 'z'.)r   r.   N)guess_formatUNKr%   r=   read)r>   r   r.   r<   r   r   r   r   f   s    r   )r>   r   c             C   s   ddl m} t}tj| s |S ytjjj	
| }t|}W nB tk
r   t| r^t}nt| rnt}n|| r|t}Y n(X x$t D ]\}}||| r|}P qW td|  d| d |S )zApplies heuristics to guess the data format of a file.

    Args:
        filename: file whose type should be guessed

    Returns:
        Guessed file format.
    r   )r/   zTraining data format of 'z' is 'z'.)r4   r/   r@   r"   r#   r&   r'   r(   r)   r*   	read_filer   loadsr%   r   Zis_markdown_nlu_filer9   r   Zis_markdown_nlg_filer:   Zis_yaml_nlu_filer;   _json_format_heuristicsitemsloggerdebug)r>   r/   guesscontentr   Zfile_formatZformat_heuristicr   r   r   r?   u   s(    	




r?   )r   )r   )(r   loggingr"   typingr   r   Zrasa.shared.utils.ior'   r4   r   r   Z0rasa.shared.nlu.training_data.formats.dialogflowr   r   r   r	   r
   r   Z+rasa.shared.nlu.training_data.training_datar   TYPE_CHECKINGZ2rasa.shared.nlu.training_data.formats.readerwriterr   	getLogger__name__rF   r6   r5   r8   r9   r;   r@   r:   ZJSONr7   rD   r-   r=   r   r?   r   r   r   r   <module>   sB    
