
    Mf                     D   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  ej                    Zd Zd ZddZd Zd	 Z G d
 de          Z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S )    Nwrapsc                 $    ddl m}  ||           S )Nr   )to_json_plotly)plotly.io.jsonr   )valuer   s     J/var/www/surfInsights/venv3-11/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                     d |                                D                       }d|  d| }|r|dz  }n|r|dz  }n|d|z   d|  dz   z  }|S )N c                 $    g | ]\  }}| d | dS )z="" ).0r   r   s      r	   
<listcomp>zformat_tag.<locals>.<listcomp>"   s(    GGGDAqa<<1<<<GGGr   <z/>>z</)joinr   )tag_name
attributesinnerclosedopenedtags         r	   
format_tagr'   !   s    GGJ4D4D4F4FGGGHHJ
%h
%
%
%
%C .t	 .s
sU{-(-----Jr   c                  r    t          t          j                    j                                      d          S )N-)struuiduuid4hexstripr   r   r	   generate_hashr/   -   s'    tz||  &&s+++r   c                 6    t          t          j        |           S N)getattrcollectionsabc)members    r	   patch_collections_abcr6   2   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 r1   r   )selfr   r   s      r	   __setattr__zAttributeDict.__setattr__H   s    S			r   c                 R    	 | |         S # t           $ r Y nw xY wt          |          r1   )KeyErrorAttributeError)r:   r   s     r	   __getattr__zAttributeDict.__getattr__K   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 r   r   )r   namemsgs     r	   
<dictcomp>z/AttributeDict.set_read_only.<locals>.<dictcomp>[   s    555ts555r   
_read_onlyFN)r2   rF   updateobjectr;   )r:   namesrD   new_read_onlys     ` r	   set_read_onlyzAttributeDict.set_read_onlyT   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)rH   r;   )r:   rD   s     r	   finalizezAttributeDict.finalizea   s     43/////r   c                    || j                             di           v rt          | j        |         |          | j                             d          }|r|| vrt          ||          t	                                          ||          S )NrF   rN   )__dict__getr>   rF   super__setitem__)r:   r   val	final_msg	__class__s       r	   rT   zAttributeDict.__setitem__e   s    $-##L"5555 !5s;;;M%%h//	 	1D C000ww""3,,,r   c                 D    |                                 D ]
\  }}|| |<   d S r1   )r   )r:   otherr   r   s       r	   rG   zAttributeDict.updateo   s2    KKMM 	 	DAqDGG	 	r   c                     |D ]}|                      |          }|r|c S |st          t          |           i           S d S r1   )rR   nextiter)r:   rI   rC   r   s       r	   firstzAttributeDict.firstu   s^     	 	DHHTNNE  	(T

B'''	( 	(r   )r@   )rL   )__name__
__module____qualname____doc__r;   r?   rK   rO   rT   rG   r]   __classcell__)rW   s   @r	   r8   r8   6   s         "  " " "B B B B0 0 0 0- - - - -  ( ( ( ( ( ( (r   r8   c                     d fdt          | t          t          f          r'dd                    fd| D                       z   dz   S  |           S )Nc                 <   |                                                      dd          dz   | j        z   }| j        r`sVt	          j        d                    d D                                           d                                                    |d z  }|S )N.z\.c              3   4   K   | ]}t          |          V  d S r1   )r*   )r   xs     r	   	<genexpr>z6create_callback_id.<locals>._concat.<locals>.<genexpr>   s(      44SVV444444r   utf-8@)	component_id_strr   component_propertyallow_duplicatehashlibmd5r    encode	hexdigest)rg   _idhashed_inputsinputss     r	   _concatz#create_callback_id.<locals>._concat   s      ""**366<q?SS 	'   'HH44V44444;;GDD! !)++  &}&&&C
r   .....c              3   .   K   | ]} |          V  d S r1   r   )r   rg   ru   s     r	   rh   z%create_callback_id.<locals>.<genexpr>   s+       < < < < < < < <r   )
isinstancelisttupler    )outputrt   ru   rs   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 )	Nrv   c                 ,    g | ]}t          |          S r   )split_callback_id)r   ois     r	   r   z%split_callback_id.<locals>.<listcomp>   s!    OOO"!"%%OOOr      rw   re      )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                 ^    t          | t                    rt          j        | dd          S | S )NT),:)	sort_keys
separators)ry   dictjsondumps)r   s    r	   stringify_idr      s1    #t Fz#*EEEEJr   c                     t                      }| D ]Y}t          |t                    r|n|g}|D ]:}t          |d                   }|                    d          || d|d          <   ;Z|S )Nr   r   re   r   )r8   ry   rz   r   rR   )inputs_listrt   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 r   )r8   r   r   s     r	   r   z,convert_to_AttributeDict.<locals>.<listcomp>   s     ;;;2]2..;;;r   )ry   r   appendr8   )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   )rR   r   s     r	   r   z-inputs_to_vals.<locals>.<listcomp>.<listcomp>   s"    %%%R%%%r   r   )ry   rz   rR   )r   r   s     r	   r   z"inputs_to_vals.<locals>.<listcomp>   sU        *4At)<)<P%%1%%%%!%%..  r   r   )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 )Nri   )encoding)ioopenrn   ro   readrp   rq   )pathfps     r	   compute_md5r      s    		(	(	( BB{27799++G4455??AAB B B B B B B B B B B B B B B B B B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   infor^   )argskwargsresfuncrD   s      r	   _wrapperz&job.<locals>.wrapper.<locals>._wrapper   sL    KK8$-MMM$'''CKKI4=YYYJr   r   )r   r   rD   s   ` r	   wrapperzjob.<locals>.wrapper   s9    	t	 	 	 	 	 
	 r   r   )rD   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 r1   )secretschoicestringascii_lettersdigits)r   _s     r	   rh   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 r1   )_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 r1   )r   r   r:   r   s     r	   r   zOrderedSet.add   s3    
""Je$$$$$ #"r   c                 :    | j                             |           d S r1   )r   remover   s     r	   discardzOrderedSet.discard   s    
%     r   c                     || j         v S r1   r   )r:   rg   s     r	   __contains__zOrderedSet.__contains__   s    DJr   c                 *    t          | j                  S r1   )lenr   )r:   s    r	   __len__zOrderedSet.__len__   s    4:r   c              #   &   K   | j         D ]}|V  d S r1   r   )r:   r   s     r	   __iter__zOrderedSet.__iter__   s,       	 	AGGGG	 	r   N)	r^   r_   r`   r   r   r   r   r   r   r   r   r	   r   r      sn          
% % %! ! !        r   r   c                 D    t          | t          t          f          s| gS | S r1   )ry   rz   r{   )objs    r	   coerce_to_listr     s$    cD%=)) uJr   rC   c                 8    |                      d          d         S )Nrj   r   )r   )rC   s    r	   clean_property_namer     s    ::c??1r   )r   FF)r   )&r   r   r+   rn   r3   r   loggingr   r   r   r   	functoolsr   	getLoggerr   r
   r   r'   r/   r6   r   r8   r}   r   r   r   r   r   r   r   r   r   r4   
MutableSetr   r   r*   r   r   r   r	   <module>r      s    



            				         				! ! !  	 	 	 	, , ,
, , ,E( E( E( E( E(D E( E( E(P  6) ) )        # # #B B B
         +   0  c      r   