o
    qiO                  
   @   s   U d 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	Zeed
< dZeed< dZeed< dZeed< dZeed< eeeeegZeed< eeeeee	eeeeiZeed< G dd dZdS )z
Pipeline that runs tokenize
    )DictList   )	NerParser)NormalizeParser)PosTaggerParser)TokenizeParser)LemmaParser	normalize	NORMALIZEtokenizeTOKENIZE
pos_tagger
POS_TAGGERnerNERlemmaLEMMAPIPELINE_NAMESREGISTERED_PARSERSc                   @   s4   e Zd ZdZdd Zedd Zdd Zdd	 Zd
S )PipelinezPipeline to processc                 C   s*   i | _ tD ]}t| i | d| j |< qdS )Pass)configpipelineN)parsersr   )selfitem r   J/home/ubuntu/.local/lib/python3.10/site-packages/urduhack/pipeline/core.py__init__   s   zPipeline.__init__c                    s    fddt D S )z7Return all currently loaded parsers in execution order.c                    s"   g | ]} j |r j | qS r   )r   get).0parser_namer   r   r   
<listcomp>)   s   " z+Pipeline.loaded_parsers.<locals>.<listcomp>)r   r#   r   r#   r   loaded_parsers&   s   zPipeline.loaded_parsersc                 C   s*   t D ]}| j|r| j| |}q|S )Tst)r   r   r    parse)r   docr"   r   r   r   r'   +   s
   zPipeline.parsec                 C   s.   t t|tt|tgsJ d| |}|S )Nz"input should be either str or list)any
isinstancestrlistr'   )r   r(   r   r   r   __call__2   s    
zPipeline.__call__N)	__name__
__module____qualname____doc__r   propertyr%   r'   r-   r   r   r   r   r      s    
r   N)r1   typingr   r   parsers.nerr   parsers.normalizer   parsers.pos_taggerr   parsers.tokenizer   parsers.lemmar	   r   r+   __annotations__r   r   r   r   r   r   r   r   r   r   r   <module>   s(   