
    |Le%                       d dl m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mZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d	Zej                            ej                  d
d
dd            Zd Z e            Z e                     e          d
d
dd            Z!e                     e          d
d
dd            Z"dS )    )annotationsN)tokenizecompute)bypixel)apply)compile_components)Glyph	LineAxis0)
Dispatcher F	antialiascudac          	        t          || |||||          \  }}t          j                                        p| j        }	t          |t          j                  rt          j        ||	          d         S | 	                                }
| j
        }|                                 }|                     |||
                      |	||          S )Nr   )	schedulerr   )glyph_dispatchdaskbaseget_scheduler__dask_scheduler__
isinstancedaArrayr   __dask_keys____dask_optimize____dask_graph__update)dfschemacanvasglyphsummaryr   r   dsknamer   keysoptimizegraphs                >lib/python3.11/site-packages/datashader/data_libraries/dask.pydask_pipeliner)      s    ub&&'Y]abbbIC 	''))BR-BI#rx   7z#333A66D#HEJJxxt$$%%%9S$    c                0   |j         r|j        s|                    |           \  }}nd\  }}|j         p|}|j        p|}t          ||z    x\  }}}	}
}||f|	|
f}}|                    ||           |j        }|j        }|j                            ||          }|j	                            ||          }||z   }||f}|j        
                    ||          }|j	        
                    ||          }t          |j        |f|j        |fg          }||||fS )N)NN)x_rangey_rangecompute_bounds_daskr   validate_ranges
plot_widthplot_heightx_axiscompute_scale_and_translatey_axiscompute_indexdictx_labely_label)r   r    r!   	x_extents	y_extentsr,   r-   x_minx_maxy_miny_maxboundswidthheightx_sty_ststshaper2   r4   axiss                        r(   shape_bounds_st_and_axisrG   &   sB   > * *$88<<	99)	9n)	Gn)	G*1Gg4E*GGE5%u~u~WG
7G,,,EF=44WeDDD=44WfEED	BUOE]((u55F]((v66F%-(5=&*ABCCD&"d""r*   c          
         !"#$%&' t          ||           \  #$}t          |t          j                  o
|j        dk    }t          || ||          \  }	}
!}}}|j        j        }|j        j        } 	                    |||	|
||           d d         &dd          '|
                    |          rmddfd}|                    t                                                                                                                    |                    |          }|                                }g }|j        |         D ]}t          |t$          j                  rt          |t$          j        j        j                  r.	 |j        }|                    |           _# t2          $ r Y kw xY w|                    |           |rt5          j        | nt4          j        }t5          j        d|          }t=          d	 t?          |j                  D                       f}tA          j!        ||j"        ||
          }tG          |$                                          tG          |$                                          k    sJ  #$fd}fd%|"! "%&'fd}tA          j%        |||%dd||j&                  }||j'        fS )N   r   r   partitioned   	partitionpd.DataFramec                    |?|d         }|dk    r|dz
           nd}t          | dd           }t          |p| d|           | S )Nnumberr   rI   attrs_datashader_row_offset)getattrsetattr)rM   cumulative_lenspartition_infopartition_index
row_offsetrQ   cumulative_lengthss         r(   funczdefault.<locals>.funcU   sg     )"0":FUXYFYFY/0ABB_`
  	7D99*,DjQQQr*   )r   )dtypec              3     K   | ]}d V  dS )rI   Nr   ).0_s     r(   	<genexpr>zdefault.<locals>.<genexpr>   s"      55!A555555r*   )metac                :               } ||            |S )z- used in the dask.array.reduction chunk step r   )	r   rF   keepdimsaggsr?   createextendrE   rD   s	       r(   chunkzdefault.<locals>.chunk   s-     ve}}tRV$$$r*   c                    t          | t                    r |           S t          | t                    r| S t          dt	          |           z            )z9 wrap datashader combine in dask.array.reduction combine z"Unknown type %s in wrapped_combine)r   listtuple	TypeErrortype)xrF   rb   combines      r(   wrapped_combinez default.<locals>.wrapped_combine   sZ    a 	L 71::5!! 	L H@477JKKKr*   c           
     p      | ||          j         j        gt          	                    S )z< Wrap datashader finalize in dask.array.reduction aggregate r,   r-   r   coordsdimsrQ   )r8   r7   r6   )
rl   rF   rb   r   finalizer!   
local_axisrn   r,   r-   s
      r(   	aggregatezdefault.<locals>.aggregate   sQ    x4::!*#mU];"7GDDDF F F 	Fr*   F)rv   rf   rm   split_everyconcatenater`   r[   N)rM   rN   )(rG   r   dd	DataFramenpartitionsr   r2   mapperr4   _build_extenduses_row_indexmap_partitionslenr   cumsumto_numpyr   dtypespdCategoricalDtypeapi
extensionsExtensionDtypesubtypeappendAttributeErrornpresult_typefloat64emptyri   ranger   r   _namerh   r   	reductionr[   r$   )(r!   r   r   r    r"   r   r   rF   rK   infor   antialias_stage_2antialias_stage_2_funcscolumn_namesx_mappery_mapperrZ   r'   r   dtsubdtyper[   r`   chunksdf_arrayrf   rv   Rr?   rm   rd   rY   re   rt   ru   rE   rD   rn   r,   r-   s(   `     `                     @@@@@@@@@@@@r(   defaultr   D   s   6r65IIE62t R..E2>A3EK)'65I\`6AC C CFD&'8->@W}#H}#H  (D&*;=TV VFRaRjGQRRjGdK00 9	 	 	 	 	 	 	  ..s33;;==DDFFOOQQt%788 E Fi%  b"-.. 	BF-<== 
	(: h'''' "   
 MM"'-=BNF##2:E 8D&&&D 55uR^44555557F xrxd;;;H&&(())T"2B2B2D2D-E-EEEEE        L L L L L  JF F F F F F F F F F F 	X( , "#
 "'   :#	' 	' 	'A& af9s   F33
G ?G c                  |rddl m nddlm t          |||           \  }t	          |t
          j                  o
|j        dk    }t          ||| |||          \  }	}
}}}}}|j	        j
        }|j        j
        }|                     |||	|
||          d d         }dd          }d
fd	}t          |                                || |          |                                }df||dffi}t          d|j                  D ]}|||dz
  f||ff||f<   fdt          |j                  D             }t           |||fgt#          ||| j        | j        gt#          ||          	          f|<   |fS )Nr   )concatrI   rJ   rL   c                ~    d}| | j         dd          |g          } d}           } || 	|           |S )NTF)
plot_start)iloc)
r   df2r   rc   r?   r   rd   re   rE   rD   s
       r(   rf   zline.<locals>.chunk   s]    
?s+,,BJve}}tRV
;;;;r*   c                    g | ]}|fS r   r   )r]   ir$   s     r(   
<listcomp>zline.<locals>.<listcomp>   s    6661dAY666r*   rp   rq   ry   )cudfr   pandasrG   r   rz   r{   r|   r   r2   r}   r4   r~   r   __dask_tokenize__r   r   r6   r8   r7   ) r!   r   r   r    r"   r   r   rF   rK   r   r   rm   rt   r   r   r^   r   r   r,   r-   rf   old_namer#   r   keys2r?   r   rd   re   r$   rE   rD   s                             @@@@@@@r(   liner      s=    "!!!!!!6r65IIE62t R..E2>A3EK7FEYT'2	4 	4 	4 [FD&'8->@WYZ }#H}#H  (D&*;=TV VFRaRjGQRRjG           B((**FE7CCD##%%H!9uxm,
-C1bn%% C C(AE!2XqMBT1I6666bn 5 5666EGU#3"44EM5=3Q 'BBBD D DECI 9r*   )#
__future__r   numpyr   r   r   r   
dask.arrayarrayr   dask.dataframe	dataframerz   	dask.baser   r   datashader.corer   datashader.utilsr   datashader.compilerr   datashader.glyphsr	   r
   r   __all__pipelineregisterr{   r)   rG   r   r   r   r   r*   r(   <module>r      s   " " " " " "                      ' ' ' ' ' ' ' ' # # # # # # " " " " " " 2 2 2 2 2 2 . . . . . . . . ' ' ' ' ' '
 	2<((CHu         )( $# # #6  =B C C C C  CL ##:?e & & & & $#& & &r*   