
    5jm>              	       v   % S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
JrJrJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  Sq\\   \S'   S rS r S r!S r"S r#\RH                  " S5      r%S\&4S jr'SHS\&S\&4S jjr(S\)S\&4S jr*S\\)   4S jr+ " S S5      r, " S S \5      r- " S! S"\R\                  5      r/ " S# S$5      r0 " S% S&\Rb                  5      r2SHS'\)S(\
S\\&\
4   4S) jjr3S*\)S\44S+ jr5SIS*\)S,\)S\)4S- jjr6S*\)S\74S. jr8S*\)S\\
   4S/ jr9S0\)S\
4S1 jr:SJS0\)S2\
S3\4SS4S4 jjr; " S5 S65      r<\<" 5       q=\<\S7'   S8r>\)\S9'   S:r?\)\S;'   S<r@\)\S='   SqA\\2   \S>'   SqB\\\)      \S?'   SqC\\)   \S@'   S\24SA jrDSB rESC\)SD\F4SE jrG\2rHS\H4SF jrIS\\)   S\H4SG jrJg)KzK
This module contains necessary functions for session config manipulation.
    N)
WHITESPACE)AnyOptionalUnionList)EventEmitter)PatternMatchingEventHandler)Observer   )_config_defaults)LDError)python_configuration)get_from_path	_observerc                  R   [        5       q[        [        S9n [         Vs1 s H"  n[        R
                  R                  U5      iM$     nnU Vs/ s H  n[        R                  X5      PM       n[        R                  5         [        R                  " [        5        g s  snf s  snf )N)patterns)r
   r   _RDPConfigChangedHandler_config_files_pathsospathdirnameschedulestartatexitregister_disable_watch)_event_handlerf
_dir_namesr   s       S/root/lseg-credit/backend/venv/lib/python3.13/site-packages/lseg/data/_configure.py_enable_watchr!      ss    
I-7JKN.AB.A"''//!$.AJB@JK
WY0
KOO
OON#	 CKs   )BB$c                  l    [         (       a)  [         R                  5         [         R                  5         g g N)r   stopjoin     r    r   r   %   s     y r'   c                  H    [        5         [        5       R                  5         g r#   )r   
get_configremove_all_listenersr&   r'   r    _disposer+   +   s    L%%'r'   c                     [        U /[        -   5      n[        R                  " U6 nUR                  [        5       l        g r#   )_create_configsr   ext_config_modConfigurationSetconfigsr)   )filepath_configs_new_configs      r    _load_config_from_filer4   0   s4    z,??@H 118<K&..JLr'   c                 d    U (       a)  U(       a!  [         R                  R                  X5      nU$ g g r#   )r   r   r%   )rootdirfilenamer   s      r    _get_filepathr8   6   s%    8ww||G. wr'   z$.*?\${(\w+(-\w+)*(_\w+)*(:\w+)*)}.*?rootc                     U=(       d    / nU HM  nUS   nSU S3n[        X$S5      n[        U[        5      (       a  S OUnU R                  XV=(       d    U5      n MO     U $ )Nr   ${}:)r   
isinstancelistreplace)valuematchr9   gr   oldnews          r    _process_matchrF   ?   sc    KREtD6nD, d++dc:#.  Lr'   datac                     U (       d  U $ U R                  5        H_  u  p#[        US5      (       a  [        X15        M#  [        U[        5      (       d  M:  [
        R                  U5      n[        X4U5      nX0U'   Ma     U $ )Nget)itemshasattr_substitute_valuesr>   str_SUBS_PATTERNfindallrF   )rG   r9   kvrB   s        r    rL   rL   J   sh    

1eq'3!))!,Eq.AG  Kr'   r   returnc                      [        U S5       n[        R                  " U[        S9nS S S 5        [        WU5      $ ! , (       d  f       N= f! [         a    0 s $ [
         a  n[        SU  S3S9UeS nAff = f)Nr)clsz"Error happened during config file z read)message)openjsonload_JSONDecoderFileNotFoundError	Exceptionr   rL   )r   r   rG   excs       r    _read_config_filer^   X   su    Y$_99QL1D  dD)) _ 	 Y B4&NOUXXYs7   A <A 
A
A 
A A7	A7$A22A7files_pathsc                     [         R                  nU  Vs/ s H  n[        U5      PM     sn[        R                  /-   nU Vs/ s H
  oA" U5      PM     nnU$ s  snf s  snf r#   )r.   config_from_dictr^   r   config)r_   ra   r   dictsdr0   s         r    r-   r-   d   s^    %66+67;aq!;7;K;R;R:SSE,12Eq"EG2N 82s   AAc                       \ rS rSrSrSrg)ConfigEventk   updater&   N)__name__
__module____qualname____firstlineno__UPDATE__static_attributes__r&   r'   r    rf   rf   k   s    Fr'   rf   c                       \ rS rSrS rSrg)r   o   c                 $   [        [        5      n[        R                  " U6 n[	        5       nUR                  5       UR                  5       :w  a2  UR                  Ul         UR                  [        R                  5        g g ! [         a     g f = fr#   )r-   r   r.   r/   r)   as_dictr0   emitrf   rm   r\   )selfeventr0   r3   rb   s        r    on_any_event%_RDPConfigChangedHandler.on_any_eventp   sy    !"56$55w? FNN$44(00FNK../ 5  s   !B 
BBr&   N)ri   rj   rk   rl   rv   rn   r&   r'   r    r   r   o   s    	r'   r   c                   f   ^  \ rS rSr\R
                  " S5      r\R                  4U 4S jjr	Sr
U =r$ )rZ   |   z.*?\${(\w+)}.*?c                   > U R                   R                  U5      nU(       aN  U H6  nUR                  SU S3[        R                  R                  XD5      5      nM8     UR                  SS5      n[        TU ]  X5      $ )Nr;   r<   \z\\)_ENV_SUBS_PATTERNrO   r@   r   environrI   superdecode)rt   s_wrB   rC   	__class__s        r    r   _JSONDecoder.decode   sj    &&..q1IIA3bk2::>>!+?@ 		$'Aw~a$$r'   r&   )ri   rj   rk   rl   recompiler|   r   rB   r   rn   __classcell__r   s   @r    rZ   rZ   |   s&    

#56%++ % %r'   rZ   c                      \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSr\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       rSrSr\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r \S\4S j5       r!\S\4S j5       r"\S\4S  j5       r#\S\4S! j5       r$\S\4S" j5       r%\S\4S# j5       r&S$r'g%)&keys   	endpointsz
logs.levelzlogs.transports.file.namezlogs.transports.file.enabledzlogs.transports.console.enabledzlogs.transports.file.sizezlogs.filterzlogs.transports.file.maxFileszlogs.transports.file.intervalz#config-change-notifications-enabledzhttp.request-timeoutzhttp.auto-retryzhttp.max-connectionszhttp.max-keepalive-connectionszsessions.desktoprR   c                     SU -  $ )Nzsessions.desktop.%sr&   session_names    r    desktop_sessionkeys.desktop_session   s    $|33r'   c                     SU -  $ )Nzsessions.desktop.%s.base-urlr&   r   s    r    desktop_base_urikeys.desktop_base_uri   s    -<<r'   c                     SU -  $ )Nz"sessions.desktop.%s.platform-pathsr&   r   s    r    desktop_platform_pathskeys.desktop_platform_paths   s    3lBBr'   c                     SU -  $ )Nz!sessions.desktop.%s.handshake-urlr&   r   s    r    desktop_handshake_urlkeys.desktop_handshake_url   s    2\AAr'   c                     SU -  $ )Nzsessions.desktop.%s.endpointsr&   r   s    r    desktop_endpointskeys.desktop_endpoints       .==r'   zsessions.platformz%sessions.platform.default.server-modec                     SU -  $ )Nzsessions.platform.%sr&   r   s    r    platform_sessionkeys.platform_session   s    %44r'   c                     SU -  $ )Nzsessions.platform.%s.endpointsr&   r   s    r    platform_endpointskeys.platform_endpoints   s    /,>>r'   c                     SU -  $ )Nzsessions.platform.%s.base-urlr&   r   s    r    platform_base_urikeys.platform_base_uri   r   r'   c                     SU -  $ )Nzsessions.platform.%s.auth.urlr&   r   s    r    platform_auth_urikeys.platform_auth_uri   r   r'   c                     SU -  $ )Nzsessions.platform.%s.auth.tokenr&   r   s    r    platform_token_urikeys.platform_token_uri   s    0<??r'   c                     SU -  $ )Nz#sessions.platform.%s.auto-reconnectr&   r   s    r    platform_auto_reconnectkeys.platform_auto_reconnect   s    4|CCr'   c                     SU -  $ )Nz sessions.platform.%s.server-moder&   r   s    r    platform_server_modekeys.platform_server_mode   s    1L@@r'   c                     SU -  $ )Nz1sessions.platform.%s.realtime-distribution-systemr&   r   s    r    %platform_realtime_distribution_system*keys.platform_realtime_distribution_system   s    B\QQr'   c                     SU  SU S3$ )Napis.streaming..endpoints.z
.locationsr&   streaming_nameendpoint_names     r    stream_connects_locationskeys.stream_connects_locations         0M?*UUr'   c                     SU  SU S3$ )Nr   r   z
.protocolsr&   r   s     r    stream_protocolskeys.stream_protocols   r   r'   c                     SU  SU S3$ )Nr   r   z.direct-urlr&   r   s     r    get_stream_direct_urlkeys.get_stream_direct_url   s      0M?+VVr'   r&   N)(ri   rj   rk   rl   r   	log_levellog_filenamelog_file_enabledlog_console_enabledlog_file_size
log_filterlog_max_fileslog_intervalwatch_enabledhttp_request_timeouthttp_auto_retry_confighttp_max_connectionshttp_max_keepalive_connectionsdesktop_sessionsstaticmethodrM   r   r   r   r   r   platform_sessions$platform_session_default_server_moder   r   r   r   r   r   r   r   r   r   r   rn   r&   r'   r    r   r      s)   II.L5;/MJ3M2L9M1.1%E")4 4 4 =# = = C C C Bs B B >3 > > ,+R(5# 5 5 ?C ? ? >3 > > >3 > > @C @ @ D D D Ac A A Rs R R VC V V V3 V V W W Wr'   r   c            	          ^  \ rS rSrU 4S jrSS\4S jjrSS\S\S\S	S4S
 jjr	S\4S jr
S\S	\4S jrS\S\R                  S	S4S jrSS jrSrU =r$ )
_RDPConfig   c                   > [         TU ]  " U6   [        5       U l        [	        U SU R                  R
                  5        [	        U SU R                  R                  5        [	        U SU R                  R                  5        [	        U SU R                  R                  5        [	        U SU R                  R                  5        g )Nonremove_listenerr*   rs   	listeners)
r~   __init__r   _emittersetattrr   r   r*   rs   r   )rt   r0   r   s     r    r   _RDPConfig.__init__   s    '"$dDMM,,-')F)FG,dmm.P.PQfdmm001k4==#:#:;r'   Nru   c                     U(       a$  [        U R                  R                  U5      5      $ SnU R                  R                  5        H*  nU[        U R                  R                  U5      5      -  nM,     U$ )z
Returns count of EventEmitter listeners

Parameters
----------
    event: str
        Event name.

Returns
-------
Count of listeners for event or all events listeners
r   )lenr   r   event_names)rt   ru   counts      r    r   _RDPConfig.count   s`     t}}..u566]]..0ES00788E 1r'   paramrA   auto_createrR   c                     [        U[        5      (       d  [        S5      eU(       d%  U R                  U5      (       d  [	        SU S35      eX U'   g)a:  
Set param to the config.

Parameters
----------
    param: str
        Parameter name.

    value: Any
        Parameter value.

    auto_create: bool
        Default value: False. We use auto_create to create new field in config

Raises
----------
Exception
    Raise exception if param name is not type 'str' .
z0Invalid type of parameter name, should be string'zV' is not defined in config. To create new parameter please use 'auto_create' property.N)r>   rM   	TypeError
_has_param
ValueError)rt   r   rA   r   s       r    	set_param_RDPConfig.set_param   sQ    ( %%%NOO4??5#9#9E7pq  Ur'   c                 
    X;   $ r#   r&   rt   r   s     r    r   _RDPConfig._has_param  s
    }r'   c                 F     X   $ ! [          a    [        SU S35      ef = f)z
Get param to the config.

Parameters
----------
    param: str
        Parameter name.

Raises
----------
Exception
    Raise exception if config doesn't has param.
zConfig object doesn't has 'z' attribute)KeyErrorAttributeErrorr   s     r    	get_param_RDPConfig.get_param  s6    	S; 	S #>ug[!QRR	Ss     indexconfig_c                 x    Uc  U R                   R                  U5        gU R                   R                  X5        g)z
Set config by using index.
This method is using for overriding default config.

Parameters
----------
    index: int
        Parameter name.
    config_: Configuration
        Config object
N)r2   popinsert)rt   r   r   s      r    _set_config_index_RDPConfig._set_config_index3  s/     ?MMe$ MM  0r'   c                 n    U R                    Vs/ s H  oR                  5       PM     nn[        U6 $ s  snf r#   )r2   copyr   )rt   rb   r0   s      r    r   _RDPConfig.copyE  s.    /3}}=}V;;=}=7## >s   2)r   r#   F)rR   r   )ri   rj   rk   rl   r   rM   r   r   boolr   r   r   intr.   Configurationr   r   rn   r   r   s   @r    r   r      s    <3 *s 3 T d < Ss Ss S(1s 1^5Q5Q 1VZ 1$$ $r'   r   keydefaultc                 4    [        5       R                  X5      $ )a  
Gets the particular value from config by key name.

Parameters
----------
key : str
    Config parameter name.
default
    Value to return if there is no particular parameter in config.
Returns
-------
dict or Any
    Value retrieved from config by name or default value.

)r)   rI   )r  r  s     r    rI   rI   J  s      <C))r'   itemc                 4    [        5       R                  U 5      $ r#   )r)   get_boolr  s    r    r
  r
  ]      <  &&r'   fmtc                 4    [        5       R                  X5      $ )a!  
Converts the particular value from config as a string.

Parameters
----------
item
    Config parameter value to convert to string.
fmt
    Placeholder for Python str.format() method to convert config value to string.

Returns
-------
str
    Config parameter value converted to string.

)r)   get_str)r  r  s     r    r  r  a  s    " <**r'   c                 4    [        5       R                  U 5      $ )z
Converts the particular value from config as an int.

Parameters
----------
item
    Config parameter value to convert to int.

Returns
-------
int
    Config parameter value converted to int.

)r)   get_intr  s    r    r  r  u  s     <%%r'   c                 4    [        5       R                  U 5      $ r#   )r)   get_listr  s    r    r  r    r  r'   r   c                 4    [        5       R                  U 5      $ )z
Gets config parameter or raise an exception if parameter does not exist.

Parameters
----------
param : str
    Config parameter.

Returns
-------
Any
    Config parameter.

Raises
------
AttributeError
    If the parameter does not exist.

)r)   r   )r   s    r    r   r     s    ( <!!%((r'   rA   r   c                 8    [        5       R                  XU5        g)a  
Sets key in key-value pair inside the config instance.

Parameters
----------
param : str
    Parameter name.
value : Any
    Parameter value.
auto_create : bool, default=False
    Flag to create new key-value pair in config.

Raises
------
TypeError
    If the parameter name is not string.
ValueError
    If config parameter does not exist and creation automatically is disabled.

N)r)   r   )r   rA   r   s      r    r   r     s    * L55r'   c                   R    \ rS rSr% Sr\\   \S'   Sr\\	   \S'   Sr
\\   \S'   Srg)	_defaultsi  Nr   r   r   r&   )ri   rj   rk   rl   r   r   rM   __annotations__r   r  r   r  rn   r&   r'   r    r  r    s.    *.(3-.#Ix}#+/(4./r'   r  defaultsLD_LIB_CONFIG_PATH_LD_LIB_CONFIG_PATHLDPLIB_ENV_DIR_LDPLIB_ENV_DIRzlseg-data.config.json_default_config_file_name_configr   _project_config_dirc                 X    [        U [        5      (       a  U /n [        U 5      n[        U6 $ r#   )r>   rM   r-   r   )r_   r0   s     r    _create_rdpconfigr"    s+    +s##"mk*Gwr'   c                  H   [         R                  R                  [        S5      n U (       a$  [         R                  R                  U [        5      n [         R                  R                  [        5      =(       d    [         R                  " 5       q	U [        [        [        S9[        [         R                  R                  S5      [        S94 Vs/ s H  nU(       d  M  UPM     snq[        [        5      q[        [        l        S q[        R%                  [&        R(                  5      nU(       a
  [+        5         [        R,                  [/        [        R,                  5      S-
     n[1        5       qUR                  [&        R4                  5      [2        l        SSKJnJn  SS KJn  U" UR                  [&        R@                  5      5      [2        l         UR                  [&        RB                  5      [2        l"        [G        U" 5       URH                  [        5        g s  snf )N )r6   r7   ~r   )convert_log_levelroot_loggerr   )%r   r}   rI   r  r   r%   r  r  getcwdr   r8   
expanduserr   r"  r  r4   rY   r   r
  r   r   r!   r0   r   r  r  r   _logr&  r'  	lseg.datarG   r   r   r   	log_debug__version__)_custom_filepathc_watch_enabled_default_configr&  r'  lds          r    reloadr3    sl    JJNN+>C77<<(8:ST**..9HRYY[
 "5@YZ"''"4"4S"9D]^

A  	

   34G)GLI%%d&8&89Nooc'//&:Q&>?O{H$3$7$78Q8Q$RH!4*?+>+>t~~+NOH$3$7$78a8a$bH!kmR^^-@A;s   HHversion	path_listc                    U R                   [        R                  :  a  g U R                  SU S[        R
                   35         SS KnUR                  n[        U Vs/ s H  oUR                   SUR
                   3PM     sn5      nU R                  S[        U5       SSR                  U5       35        U R                  S	S
R                  U5       35        g s  snf ! [         a  nU R                  SU 35         S nANLS nAff = f)NzLD version is z; Python version is r   z==zInstalled packages (z): ,zCannot log installed packages, zRead configs: z, )levelloggingDEBUGdebugsysr4  pkg_resourcesworking_setsortedr  r   r%   r\   )loggerr4  r5  _pkg_resources_installed_packagesies          r    r,  r,    s    ||gmm#
LL>'*>s{{mLM<.,88$GZ%[GZ!r!))&=GZ%[\+C0C,D+ESReIfHghi LL>$))I"6!789 &\ <6qc:;;<s*   C" $C6C" C" "
D
,DD
c                  0    [         c
  [        5         [         $ )z
Returns
-------
config object
)r  r3  r&   r'   r    r)   r)     s     Nr'   c                 t   SSK JnJn  [        R                  R                  U 5      (       d$  [        SU  S[        R                  " 5        35      eU" 5       nU" U5      =(       a    UR                  SU  35        [        U 5      n[        R                  " U5      n[        5       nUR                  SU5        U$ )z
Load user's config file and set this file as default.

Parameters
----------
    path: str
        Path to user's config file.

Raises
----------
Exception
    If can't find file by path that user provided

Returns
----------
config object
r   )r'  is_debugzCan't find file: z. Current working folder zLoad config from r   )r*  r'  rG  r   r   existsr[   r(  r;  r^   r.   ra   r)   r   )r   r'  rG  r@  loaded_configuser_configrb   s          r    load_configrK    s    $ ,77>>$"3D69RSUS\S\S^R_ `aa]FVA(9$&@A%d+M 11-@K\F
Q,Mr'   r#   )z{}r  )K__doc__r   rX   r9  r   r   r<  json.decoderr   typingr   r   r   r   pyeer   watchdog.eventsr	   watchdog.observersr
   r$  r   _errorsr   _external_librariesr   r.   _toolsr   r   r  r!   r   r+   r4   r8   r   rN   dictrF   rL   rM   r^   r-   rf   r   JSONDecoderrZ   r   r/   r   rI   r  r
  r  r  r  r  r   r   r  r  r  r  r  r  r   r   r"  r3  r?   r,  RDConfigr)   rK  r&   r'   r    <module>rX     sl      	 	 
 # - -  7 '   G ! $	8H $$(
/ 

BCt T  	*C 	*D 	*c  
: 
	%4## 	%TW TWnh$00 h$V*S *3 *%c	*: *&'3 '4 '+# +C +3 +(&# &# &$'3 '49 ')S )S ).6S 6 64 6D 600 0  k) !/ S /' '!8 3 8 $*	 $+/ Xd3i( /%) Xc] ) j  &BR:s :t :$ H hsm  r'   