
    p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ej                  j                  dd      Z	 ej                  e	      ej                  d<   d dlmZmZmZ ddlmZmZ  ej&                  e      ZeedZ G d	 d
      Zd Zy)    NVTK_MODULE_NAME
vtkmodules
vtk_module)vtkTypeUInt32ArrayvtkFloatArrayvtkDoubleArray   )base64_encodewrap_id)Float32ArrayFloat64Arrayc                   D    e Zd ZdZd Zd Zd ZddZddZd Z	d Z
d	 Zy
)SynchronizationContextzsConvenience class for caching data arrays, storing computed sha sums, keeping
    track of valid actors, etc..
    c                 .    i | _         i | _        d| _        y )NF)data_array_cachelast_dependencies_mappingignore_last_dependencies)selfs    f/DATA/.local/lib/python3.12/site-packages/trame_vtk/modules/vtk/serializers/synchronization_context.py__init__zSynchronizationContext.__init__   s     ")+&(-%    c                     || _         y N)r   )r   forces     r   set_ignore_last_dependenciesz3SynchronizationContext.set_ignore_last_dependencies"   s
    (-%r   c                 "    || j                   |<   y r   )r   )r   p_md5datas      r   cache_data_arrayz'SynchronizationContext.cache_data_array%   s    '+e$r   c                 d   | j                   |   }|d   }|d   }|j                  d      }||j                         k7  rt        j	                  d       |rW|t
        v rOt        j	                  d|j                         |       t        |          }|j                  |       t        |      }	n|j                         dk(  r|j                         |j                         z  }
t               }|j                  |
       t        |
      D ]9  }|j                  ||j!                  |      dk  rdn|j!                  |             ; t        |      }	nt        |      }	|r,|s|	j#                         S t%        ||	j#                               S t'        |s|	      S t%        ||	j#                                     S )	NarraymTimedataTypez4 ***** ERROR: you asked for an old cache key! ***** zConvert Array %s to %s   r   )r   getGetMTimeloggerdebugJS_VTK_ARRAYGetClassNameDeepCopy
memoryviewGetDataTypeGetNumberOfTuplesGetNumberOfComponentsr   SetNumberOfTuplesrangeSetValueGetValuetobyteszip_compressionr
   )r   r   binarycompression	cache_objr!   
cache_timearray_js_datatype	new_arrayp_buffer
array_sizeis               r   get_cached_data_arrayz,SynchronizationContext.get_cached_data_array(   s   ))%0	'"w'
%MM*5))LLOP!2l!BLL(%*<*<*>@Q %%679Iu%!),H B&002U5P5P5RRJ*,I''
3:&""U^^A.2rq8I ' "),H!%(H
 #   " %UH,<,<,>? 'H
 	
-<UHDTDTDV-W
 	
r   c                    t        j                          |z
  }g }| j                  D ]F  }| j                  |   }|d   }|j                         }|dk(  s-|d   |k  s6|j                  |       H |D ]  }| j                  |=  y )Nr!   r	   ts)timer   GetReferenceCountappend)r   time_windowcut_off_timeshas_to_deletesharecordr!   counts           r   check_for_arrays_to_releasez2SynchronizationContext.check_for_arrays_to_releaseR   s    yy{[0((C**3/F7OE++-EzfTl\9%%c* ) "C%%c* "r   c                 \    g }|| j                   v r| j                  s| j                   |   }|S r   )r   r   )r   idstr	last_depss      r   get_last_dependency_listz/SynchronizationContext.get_last_dependency_list`   s4    	T3331166u=Ir   c                 "    || j                   |<   y r   )r   )r   rN   dep_lists      r   set_new_dependency_listz.SynchronizationContext.set_new_dependency_listi   s    08&&u-r   c                     | j                  |      }g }||D cg c]  }||vs|t        |      gg c}z  }||D cg c]  }||vs|t        |      gg c}z  }| j                  ||       |S c c}w c c}w r   )rP   r   rS   )r   rN   new_list
add_methodremove_methodold_listcallsxs           r   build_dependency_call_listz1SynchronizationContext.build_dependency_call_listl   s    007hTh!8BS:
|,hTTWAQhEV=71:,/WW$$UH5	 UWs   	A0A0	A5A5N)FF)   )__name__
__module____qualname____doc__r   r   r   r@   rL   rP   rS   r[    r   r   r   r      s0    .
.,(
T+9r   r   c                 8   t        j                         5 }t        j                  |d      5 }|j	                  d| z  |t        j
                         d d d        |j                  d       |j                         cd d d        S # 1 sw Y   3xY w# 1 sw Y   y xY w)Nw)modezdata/%sr   )ioBytesIOzipfileZipFilewritestrZIP_DEFLATEDseekread)namer   	in_memoryzfs       r   r6   r6   w   si    	__YS1RKK	D($0D0DE 2q~~	 
11 
s"   B%B(BB		BB)re   loggingrC   rg   os	importlibsysenvironr&   vtk_module_nameimport_modulemodulesvtk_module.vtkCommonCorer   r   r   utilsr
   r   	getLoggerr]   r(   r*   r   r6   ra   r   r   <module>r{      s    	    	  
**..!2LA3I33ODL  V V )			8	$ ""\ \~ r   