
    tj                     B    d Z ddlZddlZddlZddlmZ  G d de      Zy)z*
Core Module for Web Base Data Generation
    N)	iteritemsc                   n    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y)DataHandlerc                     || _         dg| _        i | _        i | _        i | _        i | _        i | _        d | _        g | _        g | _	        i | _
        d| _        y )Nztonic-query-data-modelT)_DataHandler__roottypesmetadatadata	argumentscurrentsectionsbasePatternpriorityargOrder
realValues	can_write)selfbasePaths     L/DATA/.local/lib/python3.12/site-packages/vtkmodules/web/query_data_model.py__init__zDataHandler.__init__   sZ    ./
	    c                     | j                   S N)r   )r   s    r   getBasePathzDataHandler.getBasePath   s    {{r   c                     | j                   j                  d        d| _        d}d}| j                   D ]5  }|dk7  r||d   k(  rd}nd}|d   }d|d	   d
|| j                  | _        7 y )Nc                     | d   S )N    )items    r   <lambda>z/DataHandler.updateBasePattern.<locals>.<lambda>   s    DGr   )key r   _/{r   })r   sortr   )r   patternSeparatorcurrentPriorityr   s       r   updateBasePatternzDataHandler.updateBasePattern   s    34MMD"$"d1g-'*$'*$"1gOQ    D "r   c                 V   i }|d   }| j                   j                  |       t        |      D ]e  \  }}|dk(  r| j                  j                  ||g       )|dk(  r3|| j                  |<   |D cg c]  }dj                  |       c}||<   a|||<   g || j                  |<   yc c}w )z
        We expect the following set of arguments
         - priority
         - name
         - label (optional)
         - values
         - uiType
         - defaultIdx
        namer   valuesz{value})valueN)r   appendr   r   r   formatr   )r   kwargsnewArgumentargNamer!   r/   xs          r   registerArgumentzDataHandler.registerArgument/   s     .W%#F+JCj $$gu%56+0(GL#Mu!I$4$41$4$=u#MC #(C  , #.w	 $Ns   /B&c                 B    | j                   D ]  }|d   |k(  s||d<    y )Nr   r   )r   )r   argumentNamenewPriorityr   s       r   updatePriorityzDataHandler.updatePriorityG   s%    MMDAw,&%Q "r   c                 H    t        |      D ]  \  }}|| j                  |<    y)z,
        Update the arguments index
        N)r   r   )r   r2   r!   r/   s       r   setArgumentszDataHandler.setArgumentsL   s%     $F+JC %DLL ,r   c                     | j                   |= y r   r
   )r   r-   s     r   
removeDatazDataHandler.removeDataS   s    IIdOr   c                     di i}|d   }t        |      D ]*  \  }}|dk(  rd|v r|d   r	d|z  |d<   d|z  |d<   &|||<   , || j                  |<   y)	z>
        name, type, mimeType, fileName, dependencies
        r	   r-   fileNamerootFilez{pattern}/%spatternz{pattern}%sN)r   r
   )r   r2   newDatar4   r!   r/   s         r   registerDatazDataHandler.registerDataV   sx     r".#F+JCj 'F:,>)7%)?GI&)6)>GI&$ , %		'r   c                 .    || j                   |   d   |<   y )Nr	   r>   )r   r-   r!   r/   s       r   addDataMetaDatazDataHandler.addDataMetaDatag   s    +0		$
#C(r   c                 *   | j                   |   d   }d|v rt        | j                        dk(  rI|j                  d| j                        j                  d| j                        }|| j                   |   d<   n.|j                  d| j                        }|| j                   |   d<   i }t	        | j
                        D ]  \  }}| j                  |   d   |   ||<    t        j                  j                  | j                   |j                  di |      }|rz| j                  rnt        j                  j                  t        j                  j                  |            s2t        j                  t        j                  j                  |             |S )NrC   	{pattern}r   z
{pattern}/r.   r   )r
   lenr   replacer   r   r   ospathjoinr   r1   r   existsdirnamemakedirs)r   r-   createDirectoriesdataPatternkeyValuePairr!   r/   fullpaths           r   getDataAbsoluteFilePathz#DataHandler.getDataAbsoluteFilePathj   sE   iioi0+%4##$))11 $"2"2'+t'7'78  .9		$	*)11+t?O?OP-8		$	*#DLL1JC $s 3H =e DL 2 77<<-?[-?-?-O,-OP77>>"''//(";<BGGOOH56r   c                 H    |D ]  }| j                   j                  |        y r   )r   r0   )r   argsargs      r   addTypeszDataHandler.addTypes   s    CJJc" r   c                 "    || j                   |<   y r   )r	   r   r!   r/   s      r   addMetaDatazDataHandler.addMetaData       "cr   c                 "    || j                   |<   y r   )r   r\   s      r   
addSectionzDataHandler.addSection   r^   r   c                     | j                   d k(  r| j                          | j                  D ]G  }| j                  |   d   }d|v s|j                  d| j                         }|| j                  |   d<   I y )NrC   rI   )r   r+   r
   rK   )r   r-   rS   s      r   computeDataPatternszDataHandler.computeDataPatterns   sn    t#""$IID))D/)4Kk))11+t?O?OP-8		$	*	 r   c              #      K   | j                   d k(  r| j                          t        t        | j                  |   d               D ]%  }|| j
                  |<   | j                  |   |    ' y w)Nr.   )r   r+   rangerJ   r   r   r   )r   r-   is      r   __getattr__zDataHandler.__getattr__   sd     t#""$s4>>$/9:;A!"DLL//$'** <s   A-A/c                 "   | j                   sy | j                          | j                  | j                  | j                  | j
                  g d}t        | j                        D ]
  \  }}|||<    t        | j                        D ]  \  }}|d   j                  |        t        j                  j                  | j                  d      }t        |d      5 }|j                  t!        j"                  |             d d d        y # 1 sw Y   y xY w)N)arguments_ordertyper   r	   r
   r
   z
index.jsonw)r   rb   r   r   r   r	   r   r   r
   r0   rL   rM   rN   r   openwritejsondumps)r   jsonDatar!   r/   filePathToWritefileToWrites         r   writeDataDescriptorzDataHandler.writeDataDescriptor   s    ~~  "  $}}JJ
 $DMM2JC!HSM 3 $DII.JCV##E* / '',,t{{LA/3';djj23 (''s   %DDN)T)__name__
__module____qualname__r   r   r+   r6   r:   r<   r?   rE   rG   rV   rZ   r]   r`   rb   rf   rr   r   r   r   r   r   
   sR    &.0&
&%"10###9+4r   r   )__doc__sysrL   rm   vtkmodules.webr   objectr   r   r   r   <module>rz      s#      $l4& l4r   