
    Cdp                    z    d dl mZ d dlZd dlZd dlZddZdZddZddZ	dd	Z
ddZddZddZd ZddZd ZdS )    )annotationsN   c                   t          t          t          |                     }t          j        |                                          rt          d          t          |          st          d          t          |           dk    rt          d          t          |           dk    rt          | fd|i|S t          |           dk    rt          | fd|i|S t          |           dk    rt          | fd|i|S t          | fd|i|S )	zConvert chunks from Dask Array into an SVG Image

    Parameters
    ----------
    chunks: tuple
    size: int
        Rough size of the image

    Returns
    -------
    text: An svg string depicting the array as a grid of chunks
    zbCan't generate SVG with unknown chunk sizes.

 A possible solution is with x.compute_chunk_sizes()z+Can't generate SVG with 0-length dimensionsr   z$Can't generate SVG with 0 dimensions   size      )tuplemapsumnpisnananyNotImplementedErroralllensvg_1dsvg_2dsvg_3dsvg_nd)chunksr   kwargsshapes       .lib/python3.11/site-packages/dask/array/svg.pysvgr   	   s.    #c6""##E	x 
!C
 
 	
 u:: Q!"OPPP
6{{a!"HIII
6{{af22426222	V		f22426222	V		f22426222f22426222    z9font-size="1.0rem" font-weight="100" text-anchor="middle"r   r   c                   t          t          t          |                     }|pt          ||          }t	          | |          \  }}t          |||||          \  }\  }	}
}}d|
dz   |dz   fz  }d}|d         dk    rd}nd}d	d
d|
dz  |dz   t          |d         fz  d|
dz   |dz  t          ||
dz   |dz  |d         fz  g}|d                    ||z             z   |z   S )Nr   offsetskewr   G<svg width="%d" height="%d" style="stroke:rgb(0,0,0);stroke-width:1" >
2   
</svg>r   d      <!-- Text -->#  <text x="%f" y="%f" %s >%d</text>r      r   ?  <text x="%f" y="%f" %s transform="rotate(%d,%f,%f)">%d</text>
r
   r   r   
draw_sizesgrid_pointssvg_grid
text_stylejoin)r   r!   r"   r   sizesr   yxlinesmin_xmax_xmin_ymax_yheaderfooterrotatetexts                    r   r   r   -   s1   #c6""##E1ZD111Evu%%DAq*2	1V$T+ + +'E'E5%
 	S2:urz
"	#  FQx3 	-19ebj*eAh
7	8I2:uqy*febj%!)USTX
V	WD DIIedl+++f44r   c                   t          t          t          |                     }|pt          ||          }t	          | |          \  }}}|\  }}	t          |dz  ||dz   |	dz   fd|          \  }
\  }}}}t          ||dz  |dz   |	dz   fd|          \  }\  }}}}t          ||||z   dz   |	|z   fd|          \  }\  }}}}d	|d
z   |d
z   fz  }d}|d         dk    rd}nd}ddd||z   dz  |dz   t          |d         fz  d|dz   ||z   dz  t          ||dz   ||z   dz  |d         fz  d||z   dz  dz
  |||z
  dz  z
  dz   t          ||z   dz  dz
  |||z
  dz  z
  dz   |d         fz  g}|d                    |
|z   |z   |z             z   |z   S )Nr   g333333?
   r   )r   r   r    )r   r   r   r#   r$   r%   r   r&   r'   r(   r)   r*   r   r+   r,   z?  <text x="%f" y="%f" %s transform="rotate(45,%f,%f)">%d</text>r-   r.   )r   r   r4   r!   r   r6   r5   zoxoyxymnxmxxmnymxyzx_r9   zymin_zmax_zr:   r;   r<   r=   r>   r?   s                              r   r   r   M   sP   #c6""##E1ZD111E&%((GAq!FB'	CBGR!V,6     Bc3 $	1s7BGR!V,6  BAq% (0	1b5j2orEz2d( ( ($B$ue
 	S2:urz
"	#  FQx3 	-EMQ
Ja
A	BIBJU]aBJU]a!H
		
 	J3Y!Ob 39/!B&3Y!Ob 39/!B&!H
	
D4 DIIb2glT1222V;;r   c                T   t          |           dz  dk    rd| z   } t          t          t          |                     }t	          ||          }| }|}g }d}d}|r*t          |          dz  pd}	t          |d |	         |d |	         |df          }
||	d          }||	d          }|
                    d          }|d         }t          t          j	        d|          
                                d                   }t          ||          }t          t          j	        d	|          
                                d                   }||d
z   z  }d                    |dd                   }
|                    |
           |*d||fz  }d}|d                    |          z   |z   S )Nr	   r   )r   r   r   )r4   r!   r-   zheight="(\d*\.?\d*)"zwidth="(\d*\.?\d*)"rA   r#   r%   z

)r   r
   r   r   r/   r   splitfloatresearchgroupsmaxr3   append)r   r   r   r4   chunks2sizes2outlefttotal_heightnor7   r<   heightwidthr=   s                   r   r   r      s   
6{{Q!6!#c6""##Eu4(((EGF
CDL
 LL1!6"1":tQi@@@!""+qry!8&AAHHJJ1MNN<00bi 6??FFHHKLL
IIeAbDk""

1  " 	S
	  FFKK$$$v--r   r+   c                ,    t                     }||k    rt          j        d|dz
  |d          }nt          |          } fd|D             }|d                             dd          |d<   |d                             dd          |d<   |S )	a5  Convert points into lines of text for an SVG plot

    Examples
    --------
    >>> svg_lines([0, 1], [0, 0], [10, 11], [1, 1])  # doctest: +NORMALIZE_WHITESPACE
    ['  <line x1="0" y1="0" x2="10" y2="1" style="stroke-width:2" />',
     '  <line x1="1" y1="0" x2="11" y2="1" style="stroke-width:2" />']
    r   r   int)dtypec                R    g | ]#}d |         |         |         |         fz  $S )z*  <line x1="%d" y1="%d" x2="%d" y2="%d" /> ).0ix1x2y1y2s     r   
<listcomp>zsvg_lines.<locals>.<listcomp>   sH        	51r!ubeRPQU7SS  r   z /z style="stroke-width:2" /rQ   )r   r   linspacerangereplace)ri   rk   rj   rl   max_nr^   indicesr7   s   ````    r   	svg_linesrs      s     	BA5yy+aQU;;;((        E
 Qx&ABBE!Hb	!!$(CDDE"ILr   c                   t          j        |          |d         z   }||d         z   }t          j        || d                   |d         z   }||d         z   }|d         r ||                                 |d         z  z  }|d         r||d         |z  z  }||d         |z  z  }t	          |                                |                                          }	t	          |                                |                                          }
t          |                                |                                          }t          |                                |                                          }|dz  }ddgt          |||||          z   }| |d         z   }t          j        |           |d         z   }| |d         z   }t          j        | |d                   |d         z   }|d         r||d         | z  z  }||d         | z  z  }|d         r ||d         |                                z  z  }ddgt          |||||          z   }t          |           |k     rt          |          |k     rdnd	}|d          d
|d          d|d          d
|d          d|d          d
|d          d|d          d
|d          }ddd| d| dg}||z   |z   |	||
|ffS )zCreate lines of SVG text that show a grid

    Parameters
    ----------
    x: numpy.ndarray
    y: numpy.ndarray
    offset: tuple
        translational displacement of the grid in SVG coordinates
    skew: tuple
    r   r   rQ      r(   z  <!-- Horizontal lines -->z  <!-- Vertical lines -->ECB1728B4903, z  <!-- Colored Rectangle -->z  <polygon points="z" style="fill:#zA0;stroke-width:0"/>)r   
zeros_like	full_likerW   minrs   r   )r6   r5   r!   r"   r   ri   rk   rj   rl   r8   r:   r9   r;   rq   h_linesv_linescolorcornersrects                      r   r1   r1      s    
q		F1I	%B	
VAYB	a2		&)	+B	
VAYBAw  
aeeggQAw 
d1gk
d1gk"&&((##E"&&((##E"&&((##E"&&((##EAIE01Ib"b"e4T4TTG 
VAYB	q		F1I	%B	
VAYB	a2		&)	+BAw 
d1gk
d1gkAw  
d1g./)BBE2R2RRGA3q66E>>HHxEATTATTBTT"R&TT2b6TTBrFTTRUTTRPQUTTG
&QgQQeQQQD Wt#eUE5%AAAr   c                "    t          d| z   fi |S )NrP   )r   )r   r4   r   s      r   r   r      s    'F"--f---r   c                R    d | D             }d t          ||          D             }|S )Nc                <    g | ]}t          j        d |z             S ))r   )r   cumsum)rg   cs     r   rm   zgrid_points.<locals>.<listcomp>   s&    5554!8$$555r   c                0    g | ]\  }}||z  |d          z  S )rQ   rf   )rg   r6   r   s      r   rm   zgrid_points.<locals>.<listcomp>  s)    DDD71da$h2DDDr   )zip)r   r4   	cumchunkspointss       r   r0   r0      s7    55f555IDDc)U.C.CDDDFMr   c                    t          |           fd| D             }d |D             }t          fd|D                       S )z%Get size in pixels for all dimensionsc                6    g | ]}t          d |          z  S )g?)rW   )rg   dmxs     r   rm   zdraw_sizes.<locals>.<listcomp>  s&    ...1b3sA;;...r   c                ,    g | ]}t          |          S rf   )ratio_response)rg   rs     r   rm   zdraw_sizes.<locals>.<listcomp>	  s     000AnQ000r   c              3  "   K   | ]	}|z  V  
d S Nrf   )rg   r   r   s     r   	<genexpr>zdraw_sizes.<locals>.<genexpr>
  s'      **a******r   )rW   r
   )r   r   ratiosr   s    ` @r   r/   r/     s^    	UB.......F00000F****6******r   c                    | t           j        k     r| S | dk    rt          j        | dz             S t          j        d          S )a  How we display actual size ratios

    Common ratios in sizes span several orders of magnitude,
    which is hard for us to perceive.

    We keep ratios in the 1-3 range accurate, and then apply a logarithm to
    values up until about 100 or so, at which point we stop scaling.
    r&   g(@g\@)mathelog)r6   s    r   r   r     sA     	46zz	
cxD!!!x
###r   )r   )r   r   r   N)r   Nr   )r+   )r   r   r   r   )
__future__r   r   rT   numpyr   r   r2   r   r   r   rs   r1   r   r0   r/   r   rf   r   r   <module>r      s   " " " " " "  				    3 3 3 3B I
5 5 5 5@6< 6< 6< 6<r .  .  .  .F   45B 5B 5B 5Bp. . . .  + + + +$ $ $ $ $r   