
    +j                     J    d Z ddlZddlZddlZddlmZ  G d de          ZdS )z*
Core Module for Web Base Data Generation
    N)	iteritemsc                   p    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 ZddZd Zd Zd Zd Zd Zd ZdS )DataHandlerc                     || _         dg| _        i | _        i | _        i | _        i | _        i | _        d | _        g | _        g | _	        i | _
        d| _        d S )Nztonic-query-data-modelT)_DataHandler__roottypesmetadatadata	argumentscurrentsectionsbasePatternpriorityargOrder
realValues	can_write)selfbasePaths     Y/DATA/AppData/hermes/venv/lib/python3.11/site-packages/vtkmodules/web/query_data_model.py__init__zDataHandler.__init__   s^    ./
	    c                     | j         S N)r   )r   s    r   getBasePathzDataHandler.getBasePath   s
    {r   c                     | j                             d            d| _        d}d}| j         D ];}|dk    r||d         k    rd}nd}|d         }d|d	         d
|| j        | _        <d S )Nc                     | d         S )N    )items    r   <lambda>z/DataHandler.updateBasePattern.<locals>.<lambda>   s
    DG r   )key r   _/{r   })r   sortr   )r   patternSeparatorcurrentPriorityr   s       r   updateBasePatternzDataHandler.updateBasePattern   s    33444M 	 	D"$$"d1g--'*$$'*$"1gOOQ     D	 	r   c                    i }|d         }| j                             |           t          |          D ]M\  }}|dk    r| j                            ||g           (|dk    r|| j        |<   d |D             ||<   H|||<   N|| j        |<   dS )z
        We expect the following set of arguments
         - priority
         - name
         - label (optional)
         - values
         - uiType
         - defaultIdx
        namer   valuesc                 :    g | ]}d                      |          S )z{value})value)format).0xs     r   
<listcomp>z0DataHandler.registerArgument.<locals>.<listcomp>A   s)    #M#M#M!I$4$41$4$=$=#M#M#Mr   N)r   appendr   r   r   r   )r   kwargsnewArgumentargNamer!   r0   s         r   registerArgumentzDataHandler.registerArgument/   s     .W%%%#F++ 	) 	)JCj  $$gu%56666+0(#M#Mu#M#M#MC  #(C  "-wr   c                 <    | j         D ]}|d         |k    r||d<   d S )Nr   r   )r   )r   argumentNamenewPriorityr   s       r   updatePriorityzDataHandler.updatePriorityG   s6    M 	& 	&DAw,&&%Q	& 	&r   c                 D    t          |          D ]\  }}|| j        |<   dS )z,
        Update the arguments index
        N)r   r   )r   r6   r!   r0   s       r   setArgumentszDataHandler.setArgumentsL   s8     $F++ 	& 	&JC %DL	& 	&r   c                     | j         |= d S r   r
   )r   r-   s     r   
removeDatazDataHandler.removeDataS   s    IdOOOr   c                     di i}|d         }t          |          D ].\  }}|dk    rd|v r|d         r	d|z  |d<    d|z  |d<   )|||<   /|| j        |<   dS )	z>
        name, type, mimeType, fileName, dependencies
        r	   r-   fileNamerootFilez{pattern}/%spatternz{pattern}%sN)r   r
   )r   r6   newDatar8   r!   r0   s         r   registerDatazDataHandler.registerDataV   s     r".#F++ 	% 	%JCj  ''F:,>')7%)?GI&&)6)>GI&&$$	'r   c                 2    || j         |         d         |<   d S )Nr	   rA   )r   r-   r!   r0   s       r   addDataMetaDatazDataHandler.addDataMetaDatag   s    +0	$
#C(((r   Tc                     | j         |         d         }d|v rt          | j                  dk    rE|                    d| j                                      d| j                  }|| j         |         d<   n+|                    d| j                  }|| j         |         d<   i }t	          | j                  D ]!\  }}| j        |         d         |         ||<   "t          j        	                    | j
         |j        di |          }|rt| j        rmt          j                            t          j                            |                    s1t          j        t          j                            |                     |S )NrF   	{pattern}r   z
{pattern}/r.   r   )r
   lenr   replacer   r   r   ospathjoinr   r1   r   existsdirnamemakedirs)r   r-   createDirectoriesdataPatternkeyValuePairr!   r0   fullpaths           r   getDataAbsoluteFilePathz#DataHandler.getDataAbsoluteFilePathj   sg   ioi0+%%4#$$)))11 $"2 '+t'788  .9	$	**)11+t?OPP-8	$	*#DL11 	E 	EJC $s 3H =e DL7<<-?[-?-O-O,-O-OPP 	7 	77>>"'//(";";<< 7BGOOH55666r   c                 D    |D ]}| j                             |           d S r   )r   r5   )r   argsargs      r   addTypeszDataHandler.addTypes   s4     	# 	#CJc""""	# 	#r   c                     || j         |<   d S r   )r	   r   r!   r0   s      r   addMetaDatazDataHandler.addMetaData       "cr   c                     || j         |<   d S r   )r   r_   s      r   
addSectionzDataHandler.addSection   ra   r   c                     | j         d k    r|                                  | j        D ]D}| j        |         d         }d|v r+|                    d| j                   }|| j        |         d<   Ed S )NrF   rL   )r   r+   r
   rN   )r   r-   rV   s      r   computeDataPatternszDataHandler.computeDataPatterns   s    t##""$$$I 	9 	9D)D/)4Kk)))11+t?OPP-8	$	*		9 	9r   c              #      K   | j         d k    r|                                  t          t          | j        |         d                             D ]!}|| j        |<   | j        |         |         V  "d S )Nr.   )r   r+   rangerM   r   r   r   )r   r-   is      r   __getattr__zDataHandler.__getattr__   s      t##""$$$s4>$/9::;; 	+ 	+A!"DL/$'*****	+ 	+r   c                 
   | j         sd S |                                  | j        | j        | j        | j        g d}t          | j                  D ]
\  }}|||<   t          | j                  D ] \  }}|d         	                    |           !t          j                            | j        d          }t          |d          5 }|                    t!          j        |                     d d d            d S # 1 swxY w Y   d S )N)arguments_ordertyper   r	   r
   r
   z
index.jsonw)r   re   r   r   r   r	   r   r   r
   r5   rO   rP   rQ   r   openwritejsondumps)r   jsonDatar!   r0   filePathToWritefileToWrites         r   writeDataDescriptorzDataHandler.writeDataDescriptor   sS   ~ 	F  """  $}J
 
 $DM22 	" 	"JC!HSMM $DI.. 	+ 	+JCV##E****',,t{LAA/3'' 	4;dj22333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   (C88C<?C<N)T)__name__
__module____qualname__r   r   r+   r9   r=   r?   rB   rH   rJ   rY   r]   r`   rc   re   ri   ru   r   r   r   r   r   
   s	             &. . .0& & &
& & &  % % %"1 1 1   0# # ## # ## # #9 9 9+ + +4 4 4 4 4r   r   )__doc__sysrO   rp   vtkmodules.webr   objectr   r   r   r   <module>r}      s                 $ $ $ $ $ $l4 l4 l4 l4 l4& l4 l4 l4 l4 l4r   