
    :Qg                         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  G d de      Z ej                   ej                   e      d	      Zdad
 Zd Zd Zy# e$ r d dlZY Yw xY w)    N)path   )Detector)	ErrorCodeLangDetectException)LangProfilec                   L    e Zd ZdZdZd Zd Zd Zd Zd Z	ddZ
d	 Zd
 Zd Zy)DetectorFactorya  
    Language Detector Factory Class.

    This class manages an initialization and constructions of Detector.

    Before using language detection library,
    load profiles with DetectorFactory.load_profile(str)
    and set initialization parameters.

    When the language detection,
    construct Detector instance via DetectorFactory.create().
    See also Detector's sample code.
    Nc                      i | _         g | _        y N)word_lang_prob_maplanglistselfs    X/var/www/html/answerous/venv/lib/python3.12/site-packages/langdetect/detector_factory.py__init__zDetectorFactory.__init__   s    "$    c                    t        j                  |      }|st        t        j                  d|z         t        |      d}}|D ]  }|j                  d      rt        j                  ||      }t        j                  |      sAd }	 t        j                  d   dk  rt        |d      }nt        |dd      }t        j                  |      }t        di |}| j!                  |||       |dz  }	 |s|j)                           y # t"        $ r t        t        j$                  d	|z         t        t        j&                  d
|z        xY w# |r|j)                          w w xY w)NzNot found profile: r   .   rzutf-8)encodingr   zCannot open "%s"zProfile format error in "%s" )oslistdirr   r   NeedLoadProfileErrorlen
startswithr   joinisfilesysversion_infoopenjsonloadr   add_profileIOErrorFileLoadErrorFormatErrorclose)	r   profile_directory
list_fileslangsizeindexfilenamef	json_dataprofiles	            r   load_profilezDetectorFactory.load_profile#   sN   ZZ 12
%i&D&DF[^oFoppj/1%" 	H""3'yy!2H=H;;x(A##A&*Xs+AXsW=A IIaL	%2	2  %:
 GGI/	"  b))*A*ACUX`C`aal))*?*?A_bjAjkkGGI s   A)DAEEE$c                    t        |      d}}|dk  rt        t        j                  d      |D ];  }	 t	        j
                  |      }t        di |}| j                  |||       |dz  }= y #  t        t        j                  d      xY w)Nr      zNeed more than 2 profiles.r   zProfile format error.r   )	r   r   r   r   r$   loadsr   r&   r)   )r   json_profilesr-   r.   json_profiler1   r2   s          r   load_json_profilez!DetectorFactory.load_json_profileB   s    m,a%a<%i&D&DFbcc) 	ZLZ JJ|4	%2	2  %:
	ZZ))*?*?AXYYs   8A..B
c                    |j                   }|| j                  v rt        t        j                  d      | j                  j                  |       |j                  D ]  }|| j                  vrdg|z  | j                  |<   t        |      }d|cxk  rdk  s;n >d|j                  j                  |      z  |j                  |dz
     z  }|| j                  |   |<    y )Nz$Duplicate the same language profile.g        r   r   g      ?)namer   r   r   DuplicateLangErrorappendfreqr   r   getn_words)r   r2   r.   r-   langwordlengthprobs           r   r&   zDetectorFactory.add_profileP   s    ||4== %i&B&BDjkkT"LL 	<D4222140@''-YFFaW\\--d33goofqj6QQ7;''-e4	<r   c                      g | _         i | _        y r   )r   r   r   s    r   clearzDetectorFactory.clear^   s    "$r   c                 L    | j                         }||j                  |       |S )z5Construct Detector instance with smoothing parameter.)_create_detector	set_alpha)r   alphadetectors      r   createzDetectorFactory.createb   s)    ((*u%r   c                 d    | j                   st        t        j                  d      t	        |       S )NzNeed to load profiles.)r   r   r   r   r   r   s    r   rH   z DetectorFactory._create_detectori   s'    }}%i&D&DF^__~r   c                     || _         y r   )seed)r   rO   s     r   set_seedzDetectorFactory.set_seedn   s	    	r   c                 ,    t        | j                        S r   )listr   r   s    r   get_lang_listzDetectorFactory.get_lang_listq   s    DMM""r   r   )__name__
__module____qualname____doc__rO   r   r3   r9   r&   rF   rL   rH   rP   rS   r   r   r   r
   r
      s<     D>Z<%
#r   r
   profilesc                  X    t         $t               a t         j                  t               y y r   )_factoryr
   r3   PROFILES_DIRECTORYr   r   r   init_factoryr\   x   s$    "$01 r   c                     t                t        j                         }|j                  |        |j	                         S r   )r\   rZ   rL   r=   detecttextrK   s     r   r^   r^   ~   s,    N HOOD??r   c                     t                t        j                         }|j                  |        |j	                         S r   )r\   rZ   rL   r=   get_probabilitiesr_   s     r   detect_langsrc      s.    N HOOD%%''r   )r   r   r!   
simplejsonr$   ImportErrorrK   r   lang_detect_exceptionr   r   utils.lang_profiler   objectr
   r   dirname__file__r[   rZ   r\   r^   rc   r   r   r   <module>rk      sy    	  
  A +c#f c#L TYY|t||H5zB 2(}  s   A" "	A.-A.