
    5j:              	          S SK r S SKJr  S SKJr  S SKJr  S SKJrJ	r	J
r
JrJrJrJr  S SKrSSKJr  SSKJr  \" S	5      r\" S
5      r\(       a  S SKJr  Sr " S S\ R6                  5      r " S S\ R:                  5      r " S S5      rSMSS.S\ SS4S jjjr!SNS jr"SNS\
\    4S jjr#S r$S r%S\S\\ \4   4S jr&S r'S  r(S! r)S" r* " S# S$\+5      r,S%\-S\.4S& jr/S\.S\.4S' jr0 " S( S)5      r1 " S* S+\15      r2S,\\ \-4   S\
\    4S- jr3S,\\ \\    4   S\-4S. jr4SOS/\%S0\.S\54S1 jjr6S/\%S\54S2 jr7S3\\ \-4   S\-4S4 jr8SPS5\S6\\-\94   S7\ SS4S8 jjr:S9 r;\1" \35      r<\<r=\1" \85      r>\1" \85      r?\1" \45      r@\<rAS: rBS; rCSOS< jrDS=\ES>\ES\E4S? jrFS@ rGSPSA jrH " SB SC5      rI " SD SE5      rJ " SF SG\-5      rKSQSH jrLSI\ S\E4SJ jrM\ " SK SL5      5       rNg)R    N)defaultdict)	dataclass)Enum)AnyCallableListOptionalTYPE_CHECKINGUnionIterable   )load)get_unique_listnumpypandas)	DataFramez	:/|\?*<>"c                   <   ^  \ rS rSr\S 5       rSU 4S jjrSrU =r$ )OrEvent   c                    ^ ^^ S mS mT R                   T l        T R                  T l        UT l        U U4S jT l         U U4S jT l        g )Nc                 D    U R                  5         U R                  5         g N)_clearchangedselfs    W/root/lseg-credit/backend/venv/lib/python3.13/site-packages/lseg/data/_tools/_common.pyor_clearOrEvent.orify.<locals>.or_clear   s    KKMLLN    c                 D    U R                  5         U R                  5         g r   )_setr   r   s    r   or_setOrEvent.orify.<locals>.or_set   s    IIKLLNr    c                     > T" T 5      $ r    )eventr#   s   r   <lambda>OrEvent.orify.<locals>.<lambda>#   s	    F5Mr    c                     > T" T 5      $ r   r&   )r'   r   s   r   r(   r)   $   s	    huor    )setr"   clearr   r   )r'   changed_callbackr   r#   s   ` @@r   orifyOrEvent.orify   s:    		 YY
{{()	-r    c                 ~   >^ ^ [         TT ]  5         UU 4S jnT H  n[        R                  X25        M     U" 5         g )Nc                     > T V s/ s H  o R                  5       PM     nn [        U5      (       a  TR                  5         g TR                  5         g s  sn f r   )is_setanyr+   r,   )evboolseventsr   s     r   r   !OrEvent.__init__.<locals>.changed)   s;    +126RYY[6E25zz


	 3s   A)super__init__r   r.   )r   r6   r   r'   	__class__s   ``  r   r9   OrEvent.__init__&   s2    	 EMM%)  		r    r&   returnN)	__name__
__module____qualname____firstlineno__staticmethodr.   r9   __static_attributes____classcell__r:   s   @r   r   r      s    . . r    r   c                   <   ^  \ rS rSrU 4S jrS\4S jrS rSrU =r	$ )RepeatedTimer7   c                 4   > [         TU ]  " U0 UD6  SU l        g NT)r8   r9   daemon)r   argskwargsr:   s      r   r9   RepeatedTimer.__init__8   s    $)&)r    r=   c                 @    U R                   R                  5       (       + $ r   )finishedr2   r   s    r   not_finishedRepeatedTimer.not_finished<   s    =='')))r    c                 2   U R                  5       (       a  U R                  R                  U R                  5        U R                  R	                  5       (       d&  U R
                  " U R                  0 U R                  D6  U R                  5       (       a  M  g g r   )rQ   rP   waitintervalr2   functionrL   rM   r   s    r   runRepeatedTimer.run?   sd    !!MMt}}-==''))tyy8DKK8 !!r    )rK   )
r>   r?   r@   rA   r9   boolrQ   rW   rC   rD   rE   s   @r   rG   rG   7   s    *d *9 9r    rG   c                       \ rS rSrS rS\S\SS4S jrS\S\4S jr	S\S\S\4S	 jr
S\S\S\4S
 jrS\S\SS4S jrS\SS4S jrSS\\   SS4S jjrSrg)CallbackHandlerF   c                 `    [         R                  " 5       U l        [        [        5      U l        g r   )	threadingLock_lockr   list
_callbacksr   s    r   r9   CallbackHandler.__init__G   s    ^^%
%d+r    r'   callbackr=   Nc                     U R                      U R                  U   R                  U5        S S S 5        g ! , (       d  f       g = fr   )r`   rb   appendr   r'   rd   s      r   onCallbackHandler.onK   s*    ZZOOE"))(3 ZZs	   5
Ac                     XR                   ;   $ r   rb   r   r'   s     r   is_onCallbackHandler.is_onO   s    ''r    c                 N    XR                   ;   =(       a    X R                   U   ;   $ r   rk   rg   s      r   has_callbackCallbackHandler.has_callbackR   s     'NH8N,NNr    c                 .    U R                  X5      (       + $ r   )rp   rg   s      r   has_no_callbackCallbackHandler.has_no_callbackU   s    $$U555r    c                     U R                      U R                  U   nX#;   =(       a    UR                  U5        U(       + =(       a    U R                  R                  US 5        S S S 5        g ! , (       d  f       g = fr   )r`   rb   removepop)r   r'   rd   	callbackss       r   remove_callbackCallbackHandler.remove_callbackX   sT    ZZ.I!@i&6&6x&@M>doo11%> ZZs   AA,,
A:c                 v    U R                   R                  U/ 5      R                  5        H  nU" U0 UD6  M     g r   )rb   getcopy)r   r'   rL   rM   rd   s        r   emitCallbackHandler.emit^   s3    ++E26;;=Hd%f% >r    c                     U R                      Ub  U R                  R                  US 5        O[        [        5      U l        S S S 5        g ! , (       d  f       g = fr   )r`   rb   rw   r   ra   rl   s     r   remove_all_callbacks$CallbackHandler.remove_all_callbacksc   s9    ZZ ##E40"-d"3	 ZZs   5A
A)rb   r`   r   )r>   r?   r@   rA   r9   strr   rh   rY   rm   rp   rs   ry   r~   r	   r   rC   r&   r    r   r[   r[   F   s    ,4 4x 4D 4(3 (4 (O# O Od O6S 6H 6 6?S ?H ? ?&# &4 &
4(3- 44 4 4r    r[   F)call_from_recorderrU   r=   r   c                   U R                  SS9  U R                  SS9  U R                  SS9nUR                  S5      nUR                  " U/UQ70 UD6R                  5       nU(       a  UR                  [        R                  SS9  U$ )NT)inplacestring)excludefloat)	ffillbfillselect_dtypesastyperesampleohlcfillnapdNA)r   rU   r   rL   rM   dfs         r   r   r   k   s|    JJtJJJtJ			H		-B	7	B	X	/	/	/	4	4	6B
		"%%	&Ir    c                 b   U c  g [        U[        5      (       a  UR                  U5      nU Hb  n[        U S5      (       a  U R	                  US 5      n M(  [        U [
        [        [        45      (       a   U (       a  U [        U5         OS n Mb    g    U $ ! [        [        [        4 a       g f = f)Nr|   )
isinstancer   splithasattrr|   ra   tupledictint
IndexErrorKeyError
ValueError)objpathdelimkeys       r   get_from_pathr   w   s    
{$zz% 3''#t$CdE4011'*c#c(m   J *5 s   6BB.-B.c                 v    [        X5      nU(       a!  U Vs/ s H  oUR                  U5      PM     sn$ / $ s  snf r   )r   r|   )r   r   r   r   valueitems         r   get_list_from_pathr      s1    #$E05e,edHHSMe,=2=,s   6c                     [        U [        5      (       a   [        U 5        g[        U [        5      $ ! [         a     gf = f)NTF)r   r   r   	Exceptionr   s    r   is_intr      sA    #s	H c3	  		s   3 
A A c                 h    [        U [        5      (       a  g [        U 5        g! [         a     gf = f)NFT)r   r   iter	TypeErrorr   s    r   iterabler      s7    #sS	   s   $ 
11r   c                 j    [        U [        5      (       a  [        U 5      R                  5       $ U c  gU $ )z~
Coerce a bool type or None type into a string value.

Note that we prefer JSON-style 'true'/'false' for boolean values here.
 )r   rY   r   lowerr   s    r   bool_or_none_to_strr      s1     %5z!!	Lr    c                  
   [        S U  5       5      (       a  gU (       a#  [        U S   5      S:  a  U S   S   S:X  a  SU -   n U (       a#  [        U S   5      S:  a  U S   S   S:X  a  U S-   n SR                  S U  5       5      $ )	Nc              3   (   #    U  H  oS L v   M
     g 7fr   r&   ).0pieces     r   	<genexpr>urljoin.<locals>.<genexpr>   s     
-fUD=fs   r   r   r   /)r   c              3   B   #    U  H  oR                  S 5      v   M     g7f)r   N)strip)r   ss     r   r   r      s     1&QGGCLL&   )alllenjoin)piecess    r   urljoinr      s    

-f
---#fQi.1$1)<&#fRj/A%&*R.C*?&881&111r    c                 .   ^  [        U 4S jU 5       5      $ )Nc              3   <   >#    U  H  n[        UT5      v   M     g 7fr   )r   )r   r   	item_types     r   r   #is_all_same_type.<locals>.<genexpr>   s     =utz$	**us   )r   )r   itemss   ` r   is_all_same_typer      s    =u===r    c                     ^ SmU4S jn U $ )Nr   c                     > T S-  m T $ )Nr   r&   )is   r   countermake_counter.<locals>.counter   s    	Qr    r&   )r   r   s    @r   make_counterr      s    	A
 Nr    c                 x    [        U S5      (       a  U R                  $ [        U S5      (       a  U R                  $ g)Nreason_phrasereasonzunknown reason)r   r   r   )responses    r   get_response_reasonr      s5    x))%%%	8	$	$r    c                   $    \ rS rSrS rSS jrSrg)cached_property   c                     Xl         g r   func)r   r   s     r   r9   cached_property.__init__   s    	r    Nc                 l    U R                  U5      =o1R                  U R                   R                  '   U$ r   )r   __dict__r>   )r   instanceclsresults       r   __get__cached_property.__get__   s-    9=89LL""499#5#56r    r   r   )r>   r?   r@   rA   r9   r   rC   r&   r    r   r   r      s    r    r   
input_listc           	      `    [        U  Vs/ s H  n[        U[        5      PM     sn5      $ s  snf r   )r   r   r   )r   r   s     r   
is_all_strr      s&    J7Jq
1c"J7887s   +c                 N    [        U [        5      (       a  U $ [        SU  S35      e)NzDPlease provide boolean value ('True' or 'False'), current value is '')r   rY   r   r   s    r   validate_bool_valuer      s,    %_`e_ffghiir    c                   l    \ rS rSrSS jrSS.S\4S jjrS\4S jrS\	4S jr
S\4S	 jrS\4S
 jrSrg)
ArgsParser   r=   Nc                     Xl         g r   parse)r   r   s     r   r9   ArgsParser.__init__       
r    )r   c                    Ub'  UR                  S U R                  " U6  5       5      nU$ U R                  " U6 n[        U[        5      (       d  [	        U5      nU$ )Nc              3   8   #    U  H  n[        U5      v   M     g 7fr   )r   )r   r   s     r   r   %ArgsParser.get_str.<locals>.<genexpr>   s     K6JdD		6Js   )r   get_listr   r   r   )r   r   rL   retvals       r   get_strArgsParser.get_str   sW    ZZKdmmT6JKKF
  ZZ&Ffc**Vr    c                 T    U R                   " U6 n[        U[        5      (       d  U/nU$ r   )r   r   ra   r   rL   r   s      r   r   ArgsParser.get_list   s)    T"&$''XFr    c                     U R                   " U6 n[        U[        R                  5      (       a  UR	                  [
        5      nU$ [        U5      nU$ r   )r   r   np
datetime64r   r   r   s      r   	get_floatArgsParser.get_float  sF    T"fbmm,,]]5)F  6]Fr    c                 d    U R                   " U6 n[        U[        5      (       d  [        U5      nU$ r   )r   r   rY   r   s      r   get_boolArgsParser.get_bool	  s+    T"&$''&\Fr    c                 2    [        U R                  " U6 5      $ r   )r   r   r   rL   s     r   
get_uniqueArgsParser.get_unique  s    t}}d344r    r   r<   )r>   r?   r@   rA   r9   r   r   ra   r   r   r   rY   r  r  rC   r&   r    r   r   r      sH     $( C  %  54 5r    r   c                   :   ^  \ rS rSrSU 4S jjrS\4S jrSrU =r$ )EnumArgsParseri  r=   c                 0   > [         TU ]  U5        X l        g r   )r8   r9   parse_to_enum)r   r   r  r:   s      r   r9   EnumArgsParser.__init__  s    *r    c                      U R                   " U6 $ r   r  r  s     r   get_enumEnumArgsParser.get_enum  s    !!4((r    r  r<   )	r>   r?   r@   rA   r9   r   r  rC   rD   rE   s   @r   r	  r	    s    +) ) )r    r	  paramc                     [        U [        5      (       a  U /$ [        U [        5      (       a%  [        [        U 5      (       a  U $ [	        SU  35      e[        S[        U 5      R                   S35      eNz Not all elements are strings in z$Invalid type, expected str or list, z	 is given)r   r   ra   r   r   r   typer>   r  s    r   parse_list_of_strr    si    %w%C''L?wGHH
:4;;O;O:PPYZ
[[r    c                 *   [        U [        5      (       a  U /$ [        U [        5      (       aE  [        U [        5      (       d  [        U 5      n [	        [        U 5      (       a  U $ [        SU  35      e[        S[        U 5      R                   S35      er  )	r   r   r   ra   r   r   r   r  r>   r  s    r   parse_iterable_of_strr  )  s    %w%""%&&KEC''L?wGHH
:4;;O;O:PPYZ
[[r    
enum_classcan_be_lowerc                    ^ ^^^ T  Vs/ s H  o"R                   PM     snmS[        [        [        [        4   S[        [        [        4   4UU UU4S jjmT$ s  snf )Nr  r=   c                   > [        U [        5      (       a  U  Vs/ s H  nT" U5      PM     sn$ [        U T5      (       a  U R                  $ U T;   a  U $ T(       a^  [        U S5      (       aM  U R	                  5       nT Vs0 s H  o3R                  R	                  5       U_M     nnX$;   a  XB   R                  $ [        SU  ST 35      es  snf s  snf )NupperzValue 'z' must be in )r   ra   r   r   r  AttributeError)	r  pparam_upperr   upper_enum_valuesr  r  enum_values
parse_enums	        r   r#  #make_parse_enum.<locals>.parse_enum;  s    eT""+015aJqM511eZ((;;KLGE733++-KIS T!2!2!4e!; T/(5;;;wug];-HII 2 !Us   C$C)r   r   r   ra   r   )r  r  kr"  r#  s   `` @@r   make_parse_enumr&  8  sV    $./Jq77J/KJ%T40 JU395E J J& + 0s   Ac                 
  ^ ^^ T  Vs0 s H  oR                   R                  5       U_M     snmS[        [        [        [           [
        [        [
           4   S[        [
        [        [
           4   4UU U4S jjmT$ s  snf )Nr  r=   c                   > [        U [        5      (       a'  U R                  5       T;   a  TU R                  5          $ [        U [        5      (       a  U  Vs/ s H  nT" U5      PM     sn$ [        U T5      (       a  U $ [        U [        5      (       aK  U R	                  5       TR
                  R                  5       ;   a  TR
                  U R	                  5          n U $ [        SU  S35      es  snf )NzCannot convert param 'r   )r   r   r   ra   r  __members__keysr   )r  r  convert_to_enumr  lower_valuess     r   r+  -make_convert_to_enum.<locals>.convert_to_enumT  s    eS!!ekkm|&C..eT""0561OA&66eZ((LeS!!ekkmz7M7M7R7R7T&T**5;;=9EL1%:;; 7s   C.)r   r   r   r   r   r   )r  r   r+  r,  s   ` @@r   make_convert_to_enumr.  Q  su    9CDJJ$$&,DL<uS$s)T4:%EF <5QUW[\`WaQaKb < <  % Es   $B universec                 |    [        U 5      n U  Vs/ s H  oS;  d  M
  UPM     n nU (       a  U $ [        S5      es  snf )N>   r    z.List of universes is empty, nothing to process)r  r   )r/  r   s     r   parse_hp_universer2  g  s>     *H#:8a	'98H:
E
FF ;s   	99valtypesval_namec                    U Vs/ s H)  o3(       d  M  UR                   S:w  d  M  UR                   PM+     nnS U;   a  [        S5      e[        U 5      U;  a'  [        SU S[        U 5      R                    SU 35      eg s  snf )NNoneTypez+Use 'type(None)' instead 'None', in 'types'zParameter 'z' of invalid type provided: 'z', expected types: )r>   r   r  )r3  r4  r5  tpt_namess        r   validate_typesr:  o  s    %*NUrb{BKK:4M{r{{UGNu}EFFCy(#@cASAS@TTghogpq
 	
  Os   
A?A?A?c                      U c  g[        U S   5      [        L a  [        U S   5      OSnU  H)  n[        U5      [        L a  [        U5      OSnX:w  d  M)    g   g)NTr   r   F)r  ra   r   )rL   first_arg_sizeargarg_lens       r   are_lists_same_sizer?  {  sV    |%)$q']d%:Sa\N"3i4/#c(Q$ 
 r    c                  *    [        [        U 0 UD65      $ r   )r   r&  rL   rM   s     r   make_enum_arg_parserrB    s    ot6v677r    c                  *    [        [        U 0 UD65      $ r   )r   r.  rA  s     r   make_convert_to_enum_arg_parserrD    s    *D;F;<<r    c                 B   ^ ^ [        T U5      mU U4S jn[        U5      $ )Nc                   > TR                   R                  5        VVs0 s H  u  pUR                  5       U_M     nnn[        U [        5      (       a&  U R                  5       U;   a  X0R                  5          n T" U 5      $ s  snnf r   )r)  r   r   r   r   )r   namer   r,  r  parsers       r   _parser0make_enum_arg_parser_by_members.<locals>._parser  sm    =G=S=S=Y=Y=[\=[zt

d*=[\eS!!ekkm|&C /Ee} ]s   B)r&  r   )r  r  rI  rH  s   `  @r   make_enum_arg_parser_by_membersrK    s!    Z6F gr    destsourcec                     UR                  5        HV  u  p#U R                  U5      nX ;   a7  [        U[        5      (       a"  [        U[        5      (       a  [	        XC5        MR  X0U'   MX     U $ r   )r   r|   r   r   merge_dict_to_dict)rL  rM  
source_keysource_value
dest_values        r   rO  rO    s\    $*LLN 
XXj)
*\4"@"@ZPZ\`EaEaz8  , %3 Kr    c                 ~    U(       a5  [        U 5      n U R                  U5        [        U R                  5       5      $ U $ r   )r   updatera   r   )paramsextended_paramss     r   extend_paramsrW    s2    fo& FLLN##Mr    c                 F    U n[          H  nUR                  X15      nM     U$ r   )forbidden_symbolsreplace)filenamereplace_withr   symbols       r   get_correct_filenamer^    s$    F#5 $Mr    c                        \ rS rSrS rS rSrg)	lazy_dumpi  c                     Xl         g r   r   )r   r   s     r   r9   lazy_dump.__init__  r   r    c                 B    [         R                  " U R                  5      $ r   )jsondumpsr   r   s    r   __str__lazy_dump.__str__  s    zz$**%%r    r   N)r>   r?   r@   rA   r9   rf  rC   r&   r    r   r`  r`    s    &r    r`  c                   &    \ rS rSrS rS rS rSrg)lazy_formattingi  c                     Xl         X l        g r   textrL   )r   rl  rL   s      r   r9   lazy_formatting.__init__  s    		r    c                 4    U R                   U R                  -  $ r   rk  r   s    r   rf  lazy_formatting.__str__      yy499$$r    c                 4    U R                   U R                  -  $ r   rk  r   s    r   __repr__lazy_formatting.__repr__  rp  r    )rL   rl  N)r>   r?   r@   rA   r9   rf  rr  rC   r&   r    r   ri  ri    s    %%r    ri  c                   ^   ^  \ rS rSrU 4S jrSU 4S jjrSS jrU 4S jrSU 4S jjrSr	U =r
$ )	NotNoneListi  c                 V   > [         TU ]  5         U H  nU R                  U5        M     g r   )r8   r9   rf   )r   rL   r=  r:   s      r   r9   NotNoneList.__init__  s$    CKK r    c                 T   > [         TU ]  Ub  U5        g [        R                  5        g r   )r8   rf   r   r   )r   r   r:   s     r   rf   NotNoneList.append  s    t/t;RUU;r    c                 8    U H  nU R                  U5        M     g r   )rf   )r   r   r   s      r   extendNotNoneList.extend  s    DKK r    c                 J   > Uc  [         R                  n[        TU ]  X5        g r   )r   r   r8   __setitem__)r   r   r   r:   s      r   r~  NotNoneList.__setitem__  s    =EEEC'r    c                 J   > Uc  [         R                  n[        TU ]  X5        g r   )r   r   r8   insert)r   indexr   r:   s      r   r  NotNoneList.insert  s    <55Du#r    r&   r<   )r>   r?   r@   rA   r9   rf   r{  r~  r  rC   rD   rE   s   @r   ru  ru    s!    
<(
$ $r    ru  c                     / nU(       a'  SR                  U5      nSU 3nUR                  U5        U(       a'  SR                  U5      nSU 3nUR                  U5        SU  SSR                  U5       3$ )Nz and zis not applicable for zis applicable only to r   z' )r   rf   )
param_namenot_applicable
applicablemessages       r   3get_warning_message_if_parameter_no_used_in_requestr    sw    G n51.1AB~&\\*-
-j\:
z"zl"W\\'2344r    urlc                 r    U R                  SS5      S   n[        S UR                  S5       5       5      nU$ )N?r   r   c              3   B   #    U  H  oR                  S 5      v   M     g7f)=N)r   )r   r   s     r   r   ,get_query_params_from_url.<locals>.<genexpr>  s     ?.>.>r   &)rsplitr   r   )r  queryquery_paramss      r   get_query_params_from_urlr    s6    JJsAr"E?ekk#.>??Lr    c                   .    \ rS rSr% Sr\\S'   SrS rSr	g)SingleCheckFlagi  Fr   c                 z    U R                   nU R                  (       d  U R                   (       + U l         SU l        U$ rJ   )r   _checked_once)r   r   s     r   __bool__SingleCheckFlag.__bool__  s.    !!!ZZDJ!%Dr    )r  r   N)
r>   r?   r@   rA   r   rY   __annotations__r  r  rC   r&   r    r   r  r    s    E4Mr    r  )1min).)T)r   )NN)Or^   collectionsr   dataclassesr   enumr   typingr   r   r   r	   r
   r   r   
simplejsonrd  _lazy_loaderr   	lazy_load_utilsr   r   r   r   r   rY  Eventr   TimerrG   r[   r   r   r   r   r   r   r   r   r   r   r   objectr   ra   rY   r   r   r   r	  r  r  callabler&  r.  r2  r   r:  r?  fields_arg_parseruniverse_arg_parserhp_universe_parser'custom_insts_historical_universe_parseriterator_str_arg_parserattributes_arg_parserrB  rD  rK  r   rO  rW  r^  r`  ri  ru  r  r  r  r&   r    r   <module>r     s    # !  P P P  + #wx   ioo D9IOO 9"4 "4J	 	 	U` 	*>T#Y >
 s uS#X 2>f 94 9D 9jt j j"5 "5J)Z )
\U39- 
\$s) 
\\sHSM'9!: \t \   2X ( ,Gc4i 0 GT G	
 	
E$+$6 	
# 	
t 	

 01 '  12 *45F*G '$%:; ) 8=	
T 
4 
D 
	& &	% 	%$$ $053 4  	 	 	r    