
    !j                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlmZ  ej                    Zd Zd Z	 d#d
Zd Zd Z G d de          Zd$dZd Zd Zd Z d Z!d Z"d Z#d Z$d%dZ%d Z& G d dej'        j(                  Z)d Z*de+fdZ,deedf         de+fd Z-d! Z.d" Z/dS )&    Nescapewraps)Union)RendererHooksc                 $    ddl m}  ||           S )Nr   )to_json_plotly)plotly.io.jsonr
   )valuer
   s     G/var/www/html/bolsaweb/venv/lib/python3.11/site-packages/dash/_utils.pyto_jsonr      s$    ------>%       c                 z    | }|                                 D ]#\  }}d|z   dz   }|                    ||          }$|S )Nz{%z%})itemsreplace)templatedataskvkeys         r   interpolate_strr      sI    A

  1QhoIIc1Hr    Fc                     d                     fd|                                D                       }d|  d| }|r|dz  }n|r|dz  }n|d|z   d|  dz   z  }|S )N c                 H    g | ]\  }}| d rt          |          n| dS )z=""r   ).0r   r   sanitizes      r   
<listcomp>zformat_tag.<locals>.<listcomp>)   s=    PPPTQA	0	0h-A	0	0	0PPPr   <z/>>z</joinr   )tag_name
attributesinnerclosedopenedr    tags        ` r   
format_tagr,   %   s     PPPPZ=M=M=O=OPPP J &h
%
%
%
%C .t	 .s
sU{-(-----Jr   c                  r    t          t          j                    j                                      d          S )N-)struuiduuid4hexstrip r   r   generate_hashr5   5   s'    tz||  &&s+++r   c                 6    t          t          j        |           S N)getattrcollectionsabc)members    r   patch_collections_abcr<   :   s    ;?F+++r   c                   J     e Zd ZdZd Zd ZddZddZ fdZd	 Z	d
 Z
 xZS )AttributeDicta'  Dictionary subclass enabling attribute lookup/assignment of keys/values.

    For example::
        >>> m = AttributeDict({'foo': 'bar'})
        >>> m.foo
        'bar'
        >>> m.foo = 'not bar'
        >>> m['foo']
        'not bar'
    ``AttributeDict`` objects also provide ``.first()`` which acts like
    ``.get()`` but accepts multiple keys as arguments, and returns the value of
    the first hit, e.g.::
        >>> m = AttributeDict({'foo': 'bar', 'biz': 'baz'})
        >>> m.first('wrong', 'incorrect', 'foo', 'biz')
        'bar'
    c                     || |<   d S r7   r4   )selfr   r   s      r   __setattr__zAttributeDict.__setattr__P   s    S			r   c                 R    	 | |         S # t           $ r Y nw xY wt          |          r7   )KeyErrorAttributeError)r@   r   s     r   __getattr__zAttributeDict.__getattr__S   sA    	9 	 	 	D	 S!!!s   
 
Attribute is read-onlyc                     fd|D             }t          | dd          r| j                            |           dS t                              | d|           dS )z
        Designate named attributes as read-only with the corresponding msg

        Method is additive. Making additional calls to this method will update
        existing messages and add to the current set of _read_only names.
        c                     i | ]}|S r4   r4   )r   namemsgs     r   
<dictcomp>z/AttributeDict.set_read_only.<locals>.<dictcomp>c   s    555ts555r   
_read_onlyFN)r8   rL   updateobjectrA   )r@   namesrJ   new_read_onlys     ` r   set_read_onlyzAttributeDict.set_read_only\   sm     6555u5554u-- 	BO""=11111t\=AAAAAr   *Object is final: No new keys may be added.c                 >    t                               | d|           dS )zPrevent any new keys being set._finalN)rN   rA   )r@   rJ   s     r   finalizezAttributeDict.finalizei   s     43/////r   c                    || j                             di           v rt          | j        |         |          | j                             d          }|r|| vrt          ||          t	                                          ||          S )NrL   rT   )__dict__getrD   rL   super__setitem__)r@   r   val	final_msg	__class__s       r   rZ   zAttributeDict.__setitem__m   s    $-##L"5555 !5s;;;M%%h//	 	1D C000ww""3,,,r   c                 D    |                                 D ]
\  }}|| |<   d S r7   )r   )r@   otherr   r   s       r   rM   zAttributeDict.updatew   s2    KKMM 	 	DAqDGG	 	r   c                     |D ]}|                      |          }|r|c S |st          t          |           i           S d S r7   )rX   nextiter)r@   rO   rI   r   s       r   firstzAttributeDict.first}   s^     	 	DHHTNNE  	(T

B'''	( 	(r   )rF   )rR   )__name__
__module____qualname____doc__rA   rE   rQ   rU   rZ   rM   rc   __classcell__)r]   s   @r   r>   r>   >   s         "  " " "B B B B0 0 0 0- - - - -  ( ( ( ( ( ( (r   r>   c                     d fdfd|r
             S t          | t          t          f          r'dd                    fd| D                       z   dz   S  |           S )Nc                      t          j        d                    d  D                                           d                                                    S )N.c              3   4   K   | ]}t          |          V  d S r7   )r/   )r   xs     r   	<genexpr>z;create_callback_id.<locals>._hash_inputs.<locals>.<genexpr>   s(      ,,SVV,,,,,,r   utf-8)hashlibsha256r%   encode	hexdigestinputss   r   _hash_inputsz(create_callback_id.<locals>._hash_inputs   sL    ~HH,,V,,,,,33G<<
 

)++	r   c                     |                                                      dd          dz   | j        z   }| j        rs
             |d z  }|S )Nrk   z\.@)component_id_strr   component_propertyallow_duplicate)rm   _idrv   hashed_inputss     r   _concatz#create_callback_id.<locals>._concat   sg      ""**366<q?SS 	'  / ,&}&&&C
r   .....c              3   .   K   | ]} |          V  d S r7   r4   )r   rm   r~   s     r   rn   z%create_callback_id.<locals>.<genexpr>   s+       < < < < < < < <r   )
isinstancelisttupler%   )outputru   	no_outputr~   rv   r}   s    ` @@@r   create_callback_idr      s     M    
       |~~&4-(( Dejj < < < <V < < <<<<tCC76??r   c                     |                      d          r'd | dd                             d          D             S |                     dd          \  }}||dS )	Nr   c                 ,    g | ]}t          |          S r4   )split_callback_id)r   ois     r   r!   z%split_callback_id.<locals>.<listcomp>   s!    OOO"!"%%OOOr      r   rk      )idproperty)
startswithsplitrsplit)callback_idid_props      r   r   r      sk    d## POOAbD0A0G0G0N0NOOOO""3**IC4(((r   c                      d t           t                    r5dd                     fdt                     D                       z   dz   S  S )Nc                     t          |d          r|                                nt          j        |          }t          j        |            d| S )Nr   :)hasattrr   jsondumps)r   r   vstrs      r   _jsonzstringify_id.<locals>._json   sF    %a33Fqyy{{{A*Q--(($(((r   {,c              3   <   K   | ]} ||                   V  d S r7   r4   )r   r   r   r   s     r   rn   zstringify_id.<locals>.<genexpr>   s3      DD1eeAs1v..DDDDDDr   })r   dictr%   sorted)r   r   s   `@r   stringify_idr      sg    ) ) ) #t KSXXDDDDDsDDDDDDsJJJr   c                     t                      }| D ]Y}t          |t                    r|n|g}|D ]:}t          |d                   }|                    d          || d|d          <   ;Z|S )Nr   r   rk   r   )r>   r   r   r   rX   )inputs_listru   iinputsiiiid_strs         r   inputs_to_dictr      s    __F C C!!T**3!! 	C 	CB!"T(++F3566'??Ff//r*~//00	C Mr   c                     g }| D ]Y}t          |t                    r#|                    t          |                     :|                    d |D                        Z|S )Nc                 ,    g | ]}t          |          S r4   )r>   r   r   s     r   r!   z,convert_to_AttributeDict.<locals>.<listcomp>   s     ;;;2]2..;;;r   )r   r   appendr>   )nested_listnew_dictr   s      r   convert_to_AttributeDictr      sn    H = =a 	=OOM!,,----OO;;;;;<<<<Or   c                     d | D             S )Nc                 z    g | ]8}t          |t                    rd  |D             n|                    d          9S )c                 8    g | ]}|                     d           S )r   )rX   r   s     r   r!   z-inputs_to_vals.<locals>.<listcomp>.<listcomp>   s"    %%%R%%%r   r   )r   r   rX   )r   r   s     r   r!   z"inputs_to_vals.<locals>.<listcomp>   sU        *4At)<)<P%%1%%%%!%%..  r   r4   rt   s    r   inputs_to_valsr      s#        r   c                     t           j        dk    }t          j        t	          j        | |          |          5 }|                                 |                                t          	                    d           	 |
                                 nR# t          $ rE t                              d           |                                 |
                                 Y nw xY wd d d            d S # 1 swxY w Y   d S )Nwin32)posix)shellu/   🚨 trying to terminate subprocess in safe wayu!   🚨 first try communicate failed)sysplatform
subprocessPopenshlexr   waitpollloggerwarningcommunicate	Exception	exceptionkill)cmdis_winprocs      r   run_command_with_processr      s1   \W$F		%+c888	G	G	G 	#4		99;;NNLMMM#  """" # # #  !DEEE		  """""#	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s7   AC3?BC3AC# C3"C##C33C7:C7c                     t          j        | d          5 }t          j        |                                                    d                                                    cd d d            S # 1 swxY w Y   d S )Nro   )encoding)ioopenrp   rq   readrr   rs   )pathfps     r   compute_hashr      s    		(	(	( EB~bggii..w7788BBDDE E E E E E E E E E E E E E E E E Es   AA//A36A3c                       fd}|S )Nc                 @     t                      fd            }|S )Nc                      t                               dj                    | i |}t                               dj                   |S )Nu   🏗️  [%s] 🏗️️  - %su/   ::: 🍻🍻🍻 [%s] job done 🍻🍻🍻 :::)r   inford   )argskwargsresfuncrJ   s      r   _wrapperz&job.<locals>.wrapper.<locals>._wrapper   sL    KK8$-MMM$'''CKKI4=YYYJr   r   )r   r   rJ   s   ` r   wrapperzjob.<locals>.wrapper   s9    	t	 	 	 	 	 
	 r   r4   )rJ   r   s   ` r   jobr      s#         Nr   c                 Z    d                     d t          |           D                       S )Nr   c              3   l   K   | ]/}t          j        t          j        t          j        z             V  0d S r7   )secretschoicestringascii_lettersdigits)r   _s     r   rn   zgen_salt.<locals>.<genexpr>   sG        ABv+fm;<<     r   )r%   range)charss    r   gen_saltr      s:    77  FKEll     r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )
OrderedSetc                 H    g | _         |D ]}|                     |           d S r7   )_dataadd)r@   r   r   s      r   __init__zOrderedSet.__init__   s3    
 	 	AHHQKKKK	 	r   c                 P    || j         vr| j                             |           d S d S r7   )r   r   r@   r   s     r   r   zOrderedSet.add  s3    
""Je$$$$$ #"r   c                 :    | j                             |           d S r7   )r   remover   s     r   discardzOrderedSet.discard  s    
%     r   c                     || j         v S r7   r   )r@   rm   s     r   __contains__zOrderedSet.__contains__	  s    DJr   c                 *    t          | j                  S r7   )lenr   )r@   s    r   __len__zOrderedSet.__len__  s    4:r   c              #   &   K   | j         D ]}|V  d S r7   r   )r@   r   s     r   __iter__zOrderedSet.__iter__  s,       	 	AGGGG	 	r   N)	rd   re   rf   r   r   r   r   r   r   r4   r   r   r   r      sn          
% % %! ! !        r   r   c                 D    t          | t          t          f          s| gS | S r7   )r   r   r   )objs    r   coerce_to_listr     s$    cD%=)) uJr   rI   c                 8    |                      d          d         S )Nrx   r   )r   )rI   s    r   clean_property_namer    s    ::c??1r   hooksreturnc                 x    | dS d                     d |                                 D                       }d| dS )Nr   r   c              3   *   K   | ]\  }}| d | V  dS )z: Nr4   )r   r   r[   s      r   rn   z%hooks_to_js_object.<locals>.<genexpr>!  s0      FFHC3#FFFFFFr   r   r   r$   )r  hook_strs     r   hooks_to_js_objectr    sE    }rxxFFFFFFFHr   c                 Z    t          d |                     d          D                       S )Nc              3   4   K   | ]}t          |          V  d S r7   )int)r   r   s     r   rn   z parse_version.<locals>.<genexpr>'  s(      44AQ444444r   rk   )r   r   )versions    r   parse_versionr  &  s+    44s!3!3444444r   c                      t          j                    } | D ]/}|j        dk    r"|j        j                            dd          c S 0dS )Nz<module>rd   __main__)inspectstackfunctionframef_localsrX   )r  r   s     r   get_caller_namer  *  sX    MOOE @ @:##7#''
J????? $ :r   )r   FFF)F)r   )0r   r   r0   rp   r9   r   loggingr   r   r   r   r  htmlr   	functoolsr   typingr   
dash.typesr   	getLoggerr   r   r   r,   r5   r<   r   r>   r   r   r   r   r   r   r   r   r   r   r:   
MutableSetr   r   r/   r  r  r  r  r4   r   r   <module>r     s    



            				                       $ $ $ $ $ $				! ! !   JO    , , ,
, , ,E( E( E( E( E(D E( E( E(P   D) ) )        # # #E E E
         +   0  c    eM4$78 S    5 5 5    r   