
    i                    P   U d dl m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
Z
dZded<   dZded<   e	j                  Z e ee            Zded	<    e e ee                  Zded
<   i aded<   daded<    e	j*                  d      Z e       Zd ZefddZd Zd Z e        y)    )annotationsN)dirnameabspathz+%(levelname)-7s %(name)-30.30s: %(message)sstrLOG_FORMAT_DEBUGz2%(asctime)-15s %(levelname)s:%(name)s: %(message)sLOG_FORMAT_PROD	searx_dirsearx_parent_dirzdict[str, t.Any]settingsFbool
sxng_debugsearxc                    ddl m}  ddlm}m} | j                  d      \  }}|xs i } |||g        t        j                          t        j                  |       t        d      a
t        rt                nt        j                  t        t               t        j                   j#                  t               t        j$                  d	      j#                  t               t&        j)                  |       t        d
   d   }| t&        j)                  dt+        |             nt&        j)                  d|       t        d   d   rt&        j-                  d       yy)zsInitialize global ``settings`` and ``sxng_debug`` variables and
    ``logger`` from ``SEARXNG_SETTINGS_PATH``.
    r   )settings_loader)SCHEMAapply_schemaT)load_user_settingszgeneral.debuglevelformat)r   werkzeugoutgoingmax_request_timeoutNzmax_request_timeout=%sz max_request_timeout=%i second(s)serverpublic_instancezBe aware you have activated features intended only for public instances. This force the usage of the limiter and link_token / see https://docs.searxng.org/admin/searx.limiter.html)r   r   searx.settings_defaultsr   r   load_settingsr   clearupdateget_settingr   _logging_config_debugloggingbasicConfigLOG_LEVEL_PRODr   rootsetLevel	getLoggerloggerinforeprwarning)r   r   r   cfgmsgr   s         /root/searxng/searx/__init__.pyinit_settingsr/       s    &< ,,,EHC
)Cfb!NNOOC_-J.IN3*%..^.DC '/z&:;P&Q",d3F.GH68KL+,D	
 -    c                0   t         }| j                  d      D ]{  }t        |t        j                        rt        ||t              }n-t        |t              r|j                  |t              }nt        }|t        u se|t        u rt        |       |} |S  |S )zReturns the value to which ``name`` point.  If there is no such name in the
    settings and the ``default`` is unset, a :py:obj:`KeyError` is raised.

    .)
r   split
isinstancemsgspecStructgetattr_unsetdictgetKeyError)namedefaultvalueas       r.   r    r    J   s    
 EZZ_ eW^^,E1f-Et$IIa(EEF?& tn$EL Lr0   c                 n    t        j                  d      dv ryt        j                  j	                         S )NTERM)dumbunknownF)osgetenvsysstdoutisatty r0   r.   _is_color_terminalrJ   a   s*    	yy//::r0   c            
     t   	 dd l } t        j                  j	                  dd      }| rVt               rLdddi ddiddd	dd
d	ddiddiddd	d}ddiddiddiddidd
iddid}| j                  |||t               y t        j                  t        t        |d      t               y # t        $ r d } Y w xY w)Nr   SEARXNG_DEBUG_LOG_LEVELDEBUGgreenT)colorfaintrO   magenta)boldrO   cyanyellowred)spamdebugnoticesuccessr)   r+   errorcritical   )asctimehostname	levelnamer<   programnameusername)r   level_stylesfield_stylesfmtERRORr   )coloredlogsImportErrorrD   environr:   rJ   installr   r"   r#   r7   )rf   	log_levelrb   rc   s       r.   r!   r!   g   s     

8'BI)+%5	* $w7!F3*u%!%6	
  ) ),!1aL#V, (+
 	%% 	 	 	
 	''9g"FO_`=  s   B) )B76B7)r<   r   r=   t.Anyreturnrk   )
__future__r   typingtrF   rD   os.pathr   r   r"   r5   r   __annotations__r   WARNINGr$   __file__r	   r
   r   r   r'   r(   objectr8   r/   r    rJ   r!   rI   r0   r.   <module>ru      s    #  
 	 $   F # E L K*+	3 +(9 :; # ;
 
D 			7	#	'
T -3 .!aH r0   