
    |Le.                      d dl m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mZmZ d dlmZ d dlmZ 	 d dlZd dlZdd	lmZ n# e$ r	 dZdZdZY nw xY w	 d dlZn# e$ r dZY nw xY w G d
 d          Zd Z G d de
e          Z G d de
e          Z  G d de
e          Z! G d de!          Z" G d de!          Z# G d de
e          Z$ G d dee          Z% G d dee          Z& G d de!          Z'd3d Z(ed!             Z)ed"             Z*ed#             Z+ed$             Z,ed%             Z-d& Z.d' Z/d( Z0d) Z1d* Z2d+ Z3	 d3d4d.Z4d/ Z5d0 Z6d1 Z7d2 Z8dS )5    )annotationsN)memoize)two_stage_agg)
_PointLike_GeometryLike)isnullisrealngjit)cuda   )	cuda_argsc                  "    e Zd ZdZdZd Zd ZdS )_AntiAliasedLinez Methods common to all lines. r   c                N    || _         t          | d          r|dk    | _        d S d S )Nantialiasedr   )_line_widthhasattrr   )self
line_widths     6lib/python3.11/site-packages/datashader/glyphs/line.pyset_line_widthz_AntiAliasedLine.set_line_width    s8    %4'' 	0 *QD	0 	0    c           	     B    |                      ||||| j        ||          S N)_internal_build_extendr   )r   x_mappery_mapperinfoappendantialias_stage_2antialias_stage_2_funcss          r   _build_extendz_AntiAliasedLine._build_extend%   s.    **(D&$2BDU') ) 	)r   N)__name__
__module____qualname____doc__r   r   r"    r   r   r   r      s=        ((K0 0 0
) ) ) ) )r   r   c                    |dk    }t          | ||          }t          |          \  }	}
|
sd }t          |||||	          }||fS )Nr   )_build_map_onto_pixel_for_liner   _build_draw_segment)r   r   r   r   r    r!   expand_aggs_and_cols	antialiasmap_onto_pixel	overwriteuse_2_stage_aggdraw_segments               r   _line_internal_build_extendr1   ,   sh     QI3Hh	RRN!./@!A!AI '"&& 4j) L 000r   c                  (    e Zd ZdZed             ZdS )	LineAxis0zA line, with vertices defined by ``x`` and ``y``.

    Parameters
    ----------
    x, y : str
        Column names for the x and y coordinates of each vertex.
    c           	                                |          }t          ||||||          \  }	}t          |	||          \   j         j        d fd	}
|
S )NTc                   |\  }}}}|\  }	}
}}|  || d         j         d d                   z   }t          rat          |t          j                  rG                    |          }                    |          }t          |j                            }nH|j        d d f                                         }|j        d d f                                         }} ||||||	|
|||||g|R   d S Nr   r   )shapecudf
isinstance	DataFrameto_cupy_arrayr   locto_numpy)aggsdfvtbounds
plot_startsxtxsytyxminxmaxyminymaxaggs_and_colsxsys	do_extendr    
extend_cpuextend_cudar   r   x_namey_names                    r   extendz0LineAxis0._internal_build_extend.<locals>.extendS   s+   NBB%+"D$d 44DGM"1",=#>#>>M '
2t~66 '''F33''F33'	"((;(;<		VAAAvI&//11VAAAvI&//11&	 IBBdD$B
$58E     r   T)r+   r1   _build_extend_line_axis0xy)r   r   r   r   r   r   r    r!   r+   r0   rS   rO   rP   rQ   rR   s   `  `  `    @@@@r   r   z LineAxis0._internal_build_extendC   s      $88@@0Kh
4EG^ 1
 1
-- #;.0G#
 #

K 	 	 	 	 	 	 	 	 	 	 	 	( r   N)r#   r$   r%   r&   r   r   r'   r   r   r3   r3   ;   s9          # # W# # #r   r3   c                      e Zd ZdZd Zed             Zed             Zd Zd Z	d Z
ed             Zed	             Zd
S )LineAxis0Multi
    c                   t          fd| j        D                       st          d          t          fd| j        D                       st          d          t	          | j                  t	          | j                  k    r9t          dt	          | j                   dt	          | j                             d S )Nc                ^    g | ])}t          j        t          |                             *S r'   r	   measurestr.0xcol	in_dshapes     r   
<listcomp>z+LineAxis0Multi.validate.<locals>.<listcomp>o   /    LLLTF9,SYY788LLLr   x columns must be realc                ^    g | ])}t          j        t          |                             *S r'   r]   ra   ycolrc   s     r   rd   z+LineAxis0Multi.validate.<locals>.<listcomp>q   s/    NNNtfY.s4yy9::NNNr   y columns must be real)x and y coordinate lengths do not match:  != )allrV   
ValueErrorrW   lenr   rc   s    `r   validatezLineAxis0Multi.validaten   s    LLLLTVLLLMM 	75666NNNNtvNNNOO 	75666tv;;#df++%%ZCKKZZSQUQW[[ZZ\ \ \ &%r   c                    dS NrV   r'   r   s    r   x_labelzLineAxis0Multi.x_labelx       sr   c                    dS NrW   r'   rt   s    r   y_labelzLineAxis0Multi.y_label|   rv   r   c                     | j         | j        z   S r   rV   rW   rt   s    r   required_columnszLineAxis0Multi.required_columns       vr   c                      fd j         D             }t          | \  }}                     t          |          t	          |          f          S )Nc                F    g | ]}                     |                   S r'   _compute_bounds)ra   rV   r?   r   s     r   rd   z3LineAxis0Multi.compute_x_bounds.<locals>.<listcomp>   ;     ( ( ( ++BqE22 ( ( (r   )rV   zipmaybe_expand_boundsminmaxr   r?   bounds_listminsmaxess   ``   r   compute_x_boundszLineAxis0Multi.compute_x_bounds   f    ( ( ( ( ( $( ( (;'e''TCJJ(?@@@r   c                      fd j         D             }t          | \  }}                     t          |          t	          |          f          S )Nc                F    g | ]}                     |                   S r'   r   )ra   rW   r?   r   s     r   rd   z3LineAxis0Multi.compute_y_bounds.<locals>.<listcomp>   r   r   )rW   r   r   r   r   r   s   ``   r   compute_y_boundszLineAxis0Multi.compute_y_bounds   r   r   c                    |                      fd                                          }t          j        |d d df                   t          j        |d d df                   f}t          j        |d d df                   t          j        |d d df                   f}                     |                               |          fS )Nc           	     P    t          j        t          j         fdj        D                       t          j         fdj        D                       t          j         fdj        D                       t          j         fdj        D                       gg          S )Nc                r    g | ]3}t          j        |         j                                                  4S r'   npnanminvaluesitemra   cr?   s     r   rd   zHLineAxis0Multi.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>   5    FFF!ryA..3355FFFr   c                r    g | ]3}t          j        |         j                                                  4S r'   r   nanmaxr   r   r   s     r   rd   zHLineAxis0Multi.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>   r   r   c                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zHLineAxis0Multi.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>   r   r   c                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zHLineAxis0Multi.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>   r   r   r   arrayr   rV   r   rW   r?   r   s   `r   <lambda>z4LineAxis0Multi.compute_bounds_dask.<locals>.<lambda>       "(IFFFFtvFFFGGIFFFFtvFFFGGIFFFFtvFFFGGIFFFFtvFFFGG	5I 4J +
 +
 r   r      r      map_partitionscomputer   r   r   r   r   ddfr	x_extents	y_extentss   `    r   compute_bounds_daskz"LineAxis0Multi.compute_bounds_dask          
  
  
  
  
 799 	
 Ia1g&&	!AAAqD'(:(::	Ia1g&&	!AAAqD'(:(::	((33((335 	5r   c           	                                |          }t          ||||||          \  }	}t          |	||          \   j         j        d fd	}
|
S )NTc                $   |\  }}}}|\  }	}
}}|  || d         j         d d                   z   }t          rat          |t          j                  rG                    |          }                    |          }t          |j                            }nb|j        d d t                    f                                         }|j        d d t                    f                                         }} ||||||	|
|||||g|R   d S r6   	r7   r8   r9   r:   r;   r   r<   listr=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r    rO   rP   r   r   x_namesy_namess                    r   rS   z5LineAxis0Multi._internal_build_extend.<locals>.extend   s9   NBB%+"D$d 44DGM"1",=#>#>>M '
2t~66 '''G44''G44'	"((;(;<		VAAAtG}},-6688VAAAtG}},-6688&	 IBBdD$B
$58E     r   rT   )r+   r1   _build_extend_line_axis0_multirV   rW   r   r   r   r   r   r   r    r!   r+   r0   rS   rO   rP   r   r   s   `  `  `    @@@@r   r   z%LineAxis0Multi._internal_build_extend   s      $88@@0Kh
4EG^ 1
 1
-- #A.0G#
 #

K &&	 	 	 	 	 	 	 	 	 	 	 	( r   N)r#   r$   r%   r&   rq   propertyru   ry   r|   r   r   r   r   r   r'   r   r   rY   rY   j   s         \ \ \   X   X  A A AA A A 5 5 W5 # # W# # #r   rY   c                      e Zd ZdZd Zd Zed             Zed             Zd Z	d Z
ed             Zed	             Zd
S )
LinesAxis1zA collection of lines (on line per row) with vertices defined
    by the lists of columns in ``x`` and ``y``

    Parameters
    ----------
    x, y : list
        Lists of column names for the x and y coordinates
    c                   t          fd| j        D                       st          d          t          fd| j        D                       st          d          t	          fd| j        D                       }t          |          dk    rt          d          t	          fd| j        D                       }t          |          dk    rt          d	          t          | j                  t          | j                  k    r9t          d
t          | j                   dt          | j                             d S )Nc                ^    g | ])}t          j        t          |                             *S r'   r]   r`   s     r   rd   z'LinesAxis1.validate.<locals>.<listcomp>   s?     ( ( ( 9,SYY788 ( ( (r   rf   c                ^    g | ])}t          j        t          |                             *S r'   r]   rh   s     r   rd   z'LinesAxis1.validate.<locals>.<listcomp>   s?     * * * Y.s4yy9:: * * *r   rj   c              3  L   K   | ]}j         t          |                   V  d S r   r^   r_   r`   s     r   	<genexpr>z&LinesAxis1.validate.<locals>.<genexpr>   E        4  4$( !* 1#d)) <  4  4  4  4  4  4r   r   &x columns must have the same data typec              3  L   K   | ]}j         t          |                   V  d S r   r   rh   s     r   r   z&LinesAxis1.validate.<locals>.<genexpr>   r   r   &y columns must have the same data typerk   rl   )rm   rV   rn   rW   setro   )r   rc   unique_x_measuresunique_y_measuress    `  r   rq   zLinesAxis1.validate   s    ( ( ( ( $( ( ( ) ) 	75666 * * * *"&&* * * + + 	75666  4  4  4  4,0F 4  4  4 4 4 !!A%%EFFF  4  4  4  4,0F 4  4  4 4 4 !!A%%EFFFtv;;#df++%%ZCKKZZSQUQW[[ZZ\ \ \ &%r   c                     | j         | j        z   S r   r{   rt   s    r   r|   zLinesAxis1.required_columns   r}   r   c                    dS rs   r'   rt   s    r   ru   zLinesAxis1.x_label   rv   r   c                    dS rx   r'   rt   s    r   ry   zLinesAxis1.y_label   rv   r   c                     t          fd j        D                       } fd|D             }t          | \  }}                     t	          |          t          |          f          S )Nc              3  (   K   | ]}|         V  d S r   r'   )ra   xlabelr?   s     r   r   z.LinesAxis1.compute_x_bounds.<locals>.<genexpr>   '      33&2f:333333r   c                :    g | ]}                     |          S r'   r   )ra   rb   r   s     r   rd   z/LinesAxis1.compute_x_bounds.<locals>.<listcomp>   '    AAAdt++D11AAAr   )tuplerV   r   r   r   r   )r   r?   rL   r   r   r   s   ``    r   r   zLinesAxis1.compute_x_bounds   t    3333DF33333AAAAbAAA;'e''TCJJ(?@@@r   c                     t          fd j        D                       } fd|D             }t          | \  }}                     t	          |          t          |          f          S )Nc              3  (   K   | ]}|         V  d S r   r'   )ra   ylabelr?   s     r   r   z.LinesAxis1.compute_y_bounds.<locals>.<genexpr>   r   r   c                :    g | ]}                     |          S r'   r   )ra   ri   r   s     r   rd   z/LinesAxis1.compute_y_bounds.<locals>.<listcomp>   r   r   )r   rW   r   r   r   r   )r   r?   rM   r   r   r   s   ``    r   r   zLinesAxis1.compute_y_bounds   r   r   c                    |                      fd                                          }t          j        |d d df                   t          j        |d d df                   f}t          j        |d d df                   t          j        |d d df                   f}                     |                               |          fS )Nc           	     P    t          j        t          j         fdj        D                       t          j         fdj        D                       t          j         fdj        D                       t          j         fdj        D                       gg          S )Nc                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zDLinesAxis1.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>  r   r   c                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zDLinesAxis1.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>  r   r   c                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zDLinesAxis1.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>  r   r   c                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zDLinesAxis1.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>  r   r   r   r   s   `r   r   z0LinesAxis1.compute_bounds_dask.<locals>.<lambda>  r   r   r   r   r   r   r   r   s   `    r   r   zLinesAxis1.compute_bounds_dask  r   r   c           	                                |          }t          ||||||          \  }	}t          |	||          \   j         j        d fd	}
|
S )NTc                "   |\  }}}}|\  }	}
}}|  || d         j         d d                   z   }t          rat          |t          j                  rG                    |          }                    |          }t          |j                            }nb|j        d d t                    f                                         }|j        d d t                    f                                         }} ||||||	|
||||g|R   d S r6   r   r   s                    r   rS   z1LinesAxis1._internal_build_extend.<locals>.extend   s4   NBB%+"D$d 44DGM"1",=#>#>>M '
2t~66 '''G44''G44'	"((;(;<		VAAAtG}},-6688VAAAtG}},-6688&	IBBdD$B@QTa     r   rT   )r+   r1   &_build_extend_line_axis1_none_constantrV   rW   r   s   `  `  `    @@@@r   r   z!LinesAxis1._internal_build_extend  s      $88@@0Kh
4EG^ 1
 1
-- #I.0G#
 #

K &&	 	 	 	 	 	 	 	 	 	 	 	$ r   N)r#   r$   r%   r&   rq   r|   r   ru   ry   r   r   r   r   r   r'   r   r   r   r      s         \ \ \,     X   XA A AA A A 5 5 W5     W     r   r   c                  P    e Zd ZdZd Zd Zd Zed             Zed             Z	dS )LinesAxis1XConstantrZ   c                   t          fd| j        D                       st          d          t          fd| j        D                       }t	          |          dk    rt          d          t	          | j                  t	          | j                  k    r9t          dt	          | j                   dt	          | j                             d S )Nc                ^    g | ])}t          j        t          |                             *S r'   r]   rh   s     r   rd   z0LinesAxis1XConstant.validate.<locals>.<listcomp>9  re   r   rj   c              3  L   K   | ]}j         t          |                   V  d S r   r   rh   s     r   r   z/LinesAxis1XConstant.validate.<locals>.<genexpr><  r   r   r   r   rk   rl   )rm   rW   rn   r   ro   rV   )r   rc   r   s    ` r   rq   zLinesAxis1XConstant.validate8      LLLLTVLLLMM 	75666  4  4  4  4,0F 4  4  4 4 4 !!A%%EFFFtv;;#df++%%ZCKKZZSQUQW[[ZZ\ \ \ &%r   c                    | j         S r   )rW   rt   s    r   r|   z$LinesAxis1XConstant.required_columnsE  	    vr   c                    t          j        | j                  }t          j        | j                  }|                     ||f          S r   )r   r   rV   r   r   )r   argsx_minx_maxs       r   r   z$LinesAxis1XConstant.compute_x_boundsH  <    	$&!!	$&!!''777r   c                "    |                      fd                                          }t          j        |d d df                   t          j        |d d df                   f}                                                      |          fS )Nc                     t          j        t          j         fdj        D                       t          j         fdj        D                       gg          S )Nc                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zMLinesAxis1XConstant.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>Q  r   r   c                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zMLinesAxis1XConstant.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>R  r   r   )r   r   r   rW   r   r   s   `r   r   z9LinesAxis1XConstant.compute_bounds_dask.<locals>.<lambda>P  h    "(IFFFFtvFFFGGIFFFFtvFFFGG5I 4J +
 +
 r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   s   `   r   r   z'LinesAxis1XConstant.compute_bounds_daskM  s       
  
  
  
   799 	

 Ia1g&&	!AAAqD'(:(::	%%''((335 	5r   c           	                                |          }t          ||||||          \  }	}t          |	||          \   j         j        d fd	}
|
S )NTc                   |\  }}}}|\  }	}
}}|  || d         j         d d                   z   }t          r_t          |t          j                  rEt	          j                  }                    |          }t          |j                            }n4}|j        d d t                    f         
                                }} ||||||	|
||||g|R   d S r6   )r7   r8   r9   r:   cpasarrayr;   r   r<   r   r=   )r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r    rO   rP   r   r   x_valuesr   s                    r   rS   z:LinesAxis1XConstant._internal_build_extend.<locals>.extendj  s   NBB%+"D$d 44DGM"1",=#>#>>M '
2t~66 'Z))''G44'	"((;(;<		VAAAtG}},-6688&	IBBdD$B@QTa     r   rT   )r+   r1   #_build_extend_line_axis1_x_constantrV   rW   )r   r   r   r   r   r   r    r!   r+   r0   rS   rO   rP   r   r   s   `  `  `    @@@@r   r   z*LinesAxis1XConstant._internal_build_extendZ  s      $88@@0Kh
4EG^ 1
 1
-- #F.0G#
 #

K 6&	 	 	 	 	 	 	 	 	 	 	 	$ r   N)
r#   r$   r%   r&   rq   r|   r   r   r   r   r'   r   r   r   r   5  s         \ \ \  8 8 8
 
5 
5 W
5 ! ! W! ! !r   r   c                  P    e Zd ZdZd Zd Zd Zed             Zed             Z	dS )LinesAxis1YConstantrZ   c                   t          fd| j        D                       st          d          t          fd| j        D                       }t	          |          dk    rt          d          t	          | j                  t	          | j                  k    r9t          dt	          | j                   dt	          | j                             d S )Nc                ^    g | ])}t          j        t          |                             *S r'   r]   r`   s     r   rd   z0LinesAxis1YConstant.validate.<locals>.<listcomp>  re   r   rf   c              3  L   K   | ]}j         t          |                   V  d S r   r   r`   s     r   r   z/LinesAxis1YConstant.validate.<locals>.<genexpr>  r   r   r   r   rk   rl   )rm   rV   rn   r   ro   rW   )r   rc   r   s    ` r   rq   zLinesAxis1YConstant.validate  r   r   c                    | j         S r   )rV   rt   s    r   r|   z$LinesAxis1YConstant.required_columns  r   r   c                    t          j        | j                  }t          j        | j                  }|                     ||f          S r   )r   r   rW   r   r   )r   r   y_miny_maxs       r   r   z$LinesAxis1YConstant.compute_y_bounds  r   r   c                "    |                      fd                                          }t          j        |d d df                   t          j        |d d df                   f}                     |                                           fS )Nc                     t          j        t          j         fdj        D                       t          j         fdj        D                       gg          S )Nc                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zMLinesAxis1YConstant.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>  r   r   c                r    g | ]3}t          j        |         j                                                  4S r'   r   r   s     r   rd   zMLinesAxis1YConstant.compute_bounds_dask.<locals>.<lambda>.<locals>.<listcomp>  r   r   )r   r   r   rV   r   r   s   `r   r   z9LinesAxis1YConstant.compute_bounds_dask.<locals>.<lambda>  r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   s   `   r   r   z'LinesAxis1YConstant.compute_bounds_dask  s       
  
  
  
   799 	

 Ia1g&&	!AAAqD'(:(::	((33%%'') 	)r   c           	                                |          }t          ||||||          \  }	}t          |	||          \   j         j        d fd	}
|
S )NTc                   |\  }}}}|\  }	}
}}|  || d         j         d d                   z   }t          r_t          |t          j                  rE                    |          }t          j                  }t          |j                            }n4|j        d d t                    f         
                                }}} ||||||	|
||||g|R   d S r6   )r7   r8   r9   r:   r;   r   r   r   r<   r   r=   )r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r    rO   rP   r   r   r   y_valuess                    r   rS   z:LinesAxis1YConstant._internal_build_extend.<locals>.extend  s   NBB%+"D$d 44DGM"1",=#>#>>M '
2t~66 '''G44Z))'	"((;(;<		VAAAtG}},-6688&	IBBdD$B@QTa     r   rT   )r+   r1   #_build_extend_line_axis1_y_constantrV   rW   )r   r   r   r   r   r   r    r!   r+   r0   rS   rO   rP   r   r	  s   `  `  `    @@@@r   r   z*LinesAxis1YConstant._internal_build_extend  s      $88@@0Kh
4EG^ 1
 1
-- #F.0G#
 #

K &6	 	 	 	 	 	 	 	 	 	 	 	$ r   N)
r#   r$   r%   r&   rq   r|   r   r   r   r   r'   r   r   r   r     s         \ \ \  8 8 8
 
) 
) W
) ! ! W! ! !r   r   c                  R    e Zd Zd Zd Zd Zd Zed             Zed             Z	dS )LinesAxis1Raggedc                0   	 ddl m} n# t          $ r t          d           }Y nw xY wt	          |t          | j                           |          st          d          t	          |t          | j                           |          st          d          d S )Nr   )RaggedDtypezx must be a RaggedArrayzy must be a RaggedArray)	datashader.datatypesr  ImportErrortyper9   r_   rV   rn   rW   )r   rc   r  s      r   rq   zLinesAxis1Ragged.validate  s    	%8888888 	% 	% 	%t**KKK	% )CKK0+>> 	86777Ic$&kk2K@@ 	86777	8 	8s   	 %%c                $    | j         f| j        fz   S r   r{   rt   s    r   r|   z!LinesAxis1Ragged.required_columns  s    yDF9$$r   c                    |                      || j                 j        j                  }|                     |          S r   )r   rV   r   
flat_arrayr   r   r?   rA   s      r   r   z!LinesAxis1Ragged.compute_x_bounds  5    %%bj&6&ABB''///r   c                    |                      || j                 j        j                  }|                     |          S r   )r   rW   r   r  r   r  s      r   r   z!LinesAxis1Ragged.compute_y_bounds  r  r   c                    |                      fd                                          }t          j        |d d df                   t          j        |d d df                   f}t          j        |d d df                   t          j        |d d df                   f}                     |                               |          fS )Nc           	        t          j        t          j        | j                 j        j                                                  t          j        | j                 j        j                                                  t          j        | j                 j        j                                                  t          j        | j                 j        j                                                  gg          S r   )r   r   r   rV   r  r   r   rW   r   s    r   r   z6LinesAxis1Ragged.compute_bounds_dask.<locals>.<lambda>  s    "(Ibj&1227799Ibj&1227799Ibj&1227799Ibj&1227799	5; 4< +
 +
 r   r   r   r   r   r   r   s   `    r   r   z$LinesAxis1Ragged.compute_bounds_dask  r   r   c           	         |                      |          }t          ||||||          \  }	}t          |	||          | j        | j        dfd	}
|
S )NTc                    |\  }}}}|\  }	}
}}|         j         }|         j         }|  || d         j        d d                   z   } |||||	|
||||g|R   d S r6   )r   r7   )r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   rK   r    rO   r   rQ   rR   s                   r   rS   z7LinesAxis1Ragged._internal_build_extend.<locals>.extend  s    NBB%+"D$dF!BF!B 44DGM"1",=#>#>>MJBBdD$B@QTa     r   rT   )r+   r1   _build_extend_line_axis1_raggedrV   rW   )r   r   r   r   r   r   r    r!   r+   r0   rS   rO   rQ   rR   s      `  `    @@@r   r   z'LinesAxis1Ragged._internal_build_extend  s      $88@@0Kh
4EG^ 1
 1
-- 5.0G
 

 	 	 	 	 	 	 	 	 	 	 r   N)
r#   r$   r%   rq   r|   r   r   r   r   r   r'   r   r   r  r    s        	8 	8 	8% % %0 0 00 0 0 5 5 W5   W  r   r  c                  :    e Zd Zed             Zed             ZdS )LineAxis1Geometryc                ,    ddl m}m}m}m}m} |||||fS )Nr   )	LineDtypeMultiLineDtype	RingDtypePolygonDtypeMultiPolygonDtype)spatialpandas.geometryr   r!  r"  r#  r$  )r   r   r!  r"  r#  r$  s         r   geom_dtypeszLineAxis1Geometry.geom_dtypes  sa    	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 >9/1 	1r   c           	         ddl mmm |                     |          }t          ||||||          \  }	}t          |	||          | j        dfd	}
|
S )Nr   )PolygonArrayMultiPolygonArray	RingArrayTc                
   |\  }}}}|\  }	}
}}|  || d         j         d d                   z   }|         j        }t          |f          r
|j        }d}nt          |          rd}nd} |||||	|
||||g|R   d S )Nr   r   TF)r7   r   r9   boundary)r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   
geom_arrayclosed_ringsr)  r(  r*  r    geometry_namer   perform_extend_cpus                   r   rS   z8LineAxis1Geometry._internal_build_extend.<locals>.extend+  s    NBB%+"D$d 44DGM"1",=#>#>>MM*0J
 *|5F&GHH %'0
#J	22 %#$BBdD$L*;>K     r   rT   )r%  r(  r)  r*  r+   r1   !_build_extend_line_axis1_geometrygeometry)r   r   r   r   r   r   r    r!   r+   r0   rS   r)  r(  r*  r/  r0  s      `  `    @@@@@r   r   z(LineAxis1Geometry._internal_build_extend  s    	
 	
 	
 	
 	
 	
 	
 	
 	
 	
  $88@@0Kh
4EG^ 1
 1
-- ?.0G
 
 	 	 	 	 	 	 	 	 	 	 	 	. r   Nr#   r$   r%   r   r&  r   r   r'   r   r   r  r    sJ         1 1 X1 ' ' W' ' 'r   r  c                  :    e Zd Zed             Zed             ZdS )LineAxis1GeoPandasc                    ddl m} |fS )Nr   )GeometryDtype)geopandas.arrayr7  )r   r7  s     r   r&  zLineAxis1GeoPandas.geom_dtypesG  s    111111r   c           	         |                      |          }t          ||||||          \  }	}t          |	||          | j        dfd	}
|
S )NTc                    |\  }}}}|\  }	}
}}|  || d         j         d d                   z   }|         j        } |||||	|
|||g
|R   d S r6   )r7   r   )r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   r-  r    r/  r   r0  s                  r   rS   z9LineAxis1GeoPandas._internal_build_extend.<locals>.extend[  s    NBB%+"D$d 44DGM"1",=#>#>>MM*0JBBdD$-0=     r   rT   )r+   r1   "_build_extend_line_axis1_geopandasr2  )r   r   r   r   r   r   r    r!   r+   r0   rS   r/  r0  s      `  `    @@r   r   z)LineAxis1GeoPandas._internal_build_extendL  s    
  $88@@0Kh
4EG^ 1
 1
-- @.0G
 
 		 		 		 		 		 		 		 		 		 r   Nr3  r'   r   r   r5  r5  E  sH            X    W  r   r5  c                  T     e Zd Zd
 fdZd Zd Zd Zd Zd Ze	d	             Z
 xZS )LinesXarrayCommonXx_dim_indexintc                Z    t                                          ||           || _        d S r   )super__init__r>  )r   rV   rW   r>  	__class__s       r   rB  zLinesXarrayCommonX.__init__j  s+    A&r   c                H    t          t          |           | j        f          S r   )hashr  r>  rt   s    r   __hash__zLinesXarrayCommonX.__hash__n  s    T$ZZ!12333r   c                l    |                      || j                           }|                     |          S r   )r   rV   r   r   datasetrA   s      r   r   z#LinesXarrayCommonX.compute_x_boundsr  /    %%gdfo66''///r   c                l    |                      || j                           }|                     |          S r   )r   rW   r   rH  s      r   r   z#LinesXarrayCommonX.compute_y_boundsv  rJ  r   c                V    |                      |          |                     |          fS r   )r   r   )r   xr_dss     r   r   z&LinesXarrayCommonX.compute_bounds_daskz  s)    $$U++T-B-B5-I-IIIr   c                    t          |j        t          | j                                     st	          d          t          |j        t          | j                                     st	          d          d S )Nzx column must be realzy column must be real)r	   r^   r_   rV   rn   rW   rp   s     r   rq   zLinesXarrayCommonX.validate}  sj    i'DF455 	64555i'DF455 	64555	6 	6r   c           	         |                      |          }t          ||||||          \  }	}| j        dk    t          |	||          \  | j        | j        dfd	}
|
S )Nr   Tc                   |\  }}}}|\  }	}
}}|  || d         j         d d                   z   }t          rit          |t          j                  rOt	          j        |                   }t	          j        |                   }t          |j                            }nt          r{t          |         j        t          j                  rVt	          j        |                   }|         j        }r|j         d d d         n|j         }t          |                   }n6|         	                                }|         	                                }} ||||||	|
||||g|R   d S )Nr   r   )
r7   r8   r9   r:   r   r   r   datandarrayr=   )r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r7   r    rO   rP   r   	swap_dimsrQ   rR   s                     r   rS   z9LinesXarrayCommonX._internal_build_extend.<locals>.extend  s{   NBB%+"D$d 44DGM"1",=#>#>>M '
2t~66 'Z6
++Z6
++'	"((;(;<		 '
2f:?BJ?? 'Z6
++Z_*3A2'	%(8(89		Z((**Z((**&	IBBdD$B@QTa     r   rT   )r+   r1   r>  r   rV   rW   )r   r   r   r   r   r   r    r!   r+   r0   rS   rO   rP   rT  rQ   rR   s      `  `    @@@@@r   r   z)LinesXarrayCommonX._internal_build_extend  s    
  $88@@0Kh
4EG^ 1
 1
-- $)	"E.0G#
 #

K 	 	 	 	 	 	 	 	 	 	 	 	. r   )r>  r?  )r#   r$   r%   rB  rF  r   r   r   rq   r   r   __classcell__)rC  s   @r   r=  r=  i  s        ' ' ' ' ' '4 4 40 0 00 0 0J J J6 6 6 ( ( W( ( ( ( (r   r=  Fc                ^     t            fd            }t            fd            }|r|S |S )Nc
                (   t           |          | z  |z             }
t           |	          |z  |z             }t           |          | z  |z             }t           |          |z  |z             }|
|k    r|
dz
  n|
||k    r|dz
  n|fS )a  Map points onto pixel grid.

        Points falling on upper bound are mapped into previous bin.

        If the line has been clipped, x and y will have been
        computed to lie on the bounds; we compare point and bounds
        in integer space to avoid fp error. In contrast, with
        auto-ranging, a point on the bounds will be the same
        floating point number as the bound, so comparison in fp
        representation of continuous space or in integer space
        doesn't change anything.
        r   )r?  round)rC   rD   rE   rF   rG   rH   rI   rJ   rV   rW   xxyyxxmaxyymaxr   r   s                 r   map_onto_pixel_snapz;_build_map_onto_pixel_for_line.<locals>.map_onto_pixel_snap  s     !r!B&''!r!B&'' hhtnnr)B.//hhtnnr)B.//++Q2++Q2/ 	/r   c
                \     |          | z  |z   dz
  }
 |	          |z  |z   dz
  }|
|fS )N      ?r'   )rC   rD   rE   rF   rG   rH   rI   rJ   rV   rW   rY  rZ  r   r   s               r   map_onto_pixel_no_snapz>_build_map_onto_pixel_for_line.<locals>.map_onto_pixel_no_snap  sB    Xa[[^b 3&Xa[[^b 3&2vr   r
   )r   r   want_antialiasr]  r`  s   ``   r   r)   r)     sm    
/ / / / / U/@      U
  #%%""r   c	                    || k     r	|| k     rd}n,||k    r	||k    rd}n||k     r	||k     rd}n||k    r||k    rd}d\  }	}
||z
  }t          | || z
  |	|
          \  }	}
}|sd}t          |||z
  |	|
          \  }	}
}|sd}||z
  }t          | ||z
  |	|
          \  }	}
}|sd}t          |||z
  |	|
          \  }	}
}|sd}|
dk     rd}||
|z  z   }||
|z  z   }nd}|	dk    rd}||	|z  z   }||	|z  z   }nd}|||||||fS )z An implementation of the Liang-Barsky line clipping algorithm.

    https://en.wikipedia.org/wiki/Liang%E2%80%93Barsky_algorithm

    T)r   r   r   Fr   )_clipt)rG   rH   rI   rJ   x0x1y0y1skipt0t1dx1acceptdy1clipped_endclipped_starts                   r   _liang_barskyrq    s    
DyyR$YY	drDyy	drDyy	drDyyFB
r'CSD"t)R44NBF CB33NBF 
r'CSD"t)R44NBF CB33NBF 	Avv"s(]"s(]	Avv"s(]"s(]r2r4;;r   c                    d}| dk     r|dk     r|| z  }||k    rd}n4||k    r|}n+| dk    r|| k     r|| z  }||k     rd}n||k     r|}n|dk     rd}|||fS )NTr   Fr'   )pqrj  rk  rm  r   s         r   rd  rd    s    F1uuQEr66FFVVB	
Q1q55Er66FFVVB	
Qr6>r   c                >    t          |t          | |                    S r   )r   r   )rV   lowhighs      r   _clamprx  #  s     sC4LL!!!r   c                :    t          || z
  || z
  z  dd          }|S )N              ?)rx  )edge0edge1rV   ts       r   _linearstepr  )  s%    E	eem,c377AHr   c                >    ||k    r|S | |z
  ||z
  z  }||||z
  z  z   S r   r'   )rW   cx0cy0cx1cy1fracs         r   _x_interceptr  /  s8     czz
Gc	"DsSy!!!r   c                6    t           | d                         }|S )zQSpecialize antialiased line drawing algorithm for a given append/axis combinationc                
   ||k    r||k    rdS t          ||z
            t          ||z
            k     }|r||}}||}}|
|	}
}	d}| dk     r|| z  }d} d}d| |z   z  }||k     p||k    o||k     }t          ||z
            }t          ||z
            }t          j        |dz  |dz  z             }||z  }||z  }|}| }|ru||||z
  z  z
  |d<   ||| |z
  z  z
  |d<   ||| |z   z  z
  |d<   ||||z   z  z
  |d<   ||||z
  z  z
  |d<   ||| |z
  z  z
  |d	<   ||| |z   z  z
  |d
<   ||||z   z  z
  |d<   nt||||z
  z  z   |d<   ||| |z
  z  z   |d<   ||| |z   z  z   |d<   ||||z   z  z   |d<   ||||z
  z  z   |d<   ||| |z
  z  z   |d	<   ||| |z   z  z   |d
<   ||||z   z  z   |d<   |dz
  }|dz
  }|r||}}|r||k    rdnd}n
||k    rdnd}|sA|s?||	z
  }||
z
  }t          j        |dz  |dz  z             }|dk    r||z  }||z  }|} | }!nd}t	          t          j        |d|z                      d|          }"t	          t          j        |d|dz   dz  z                      d|          }#|}$|$dz   dz  }%|}&|&dz   dz  }'t          |"|#dz             D ]k}(|$|k    r|(|d|%z            k    r
|%}$|$dz   dz  }%|&|k    r|(|d|'z            k    r
|'}&|&dz   dz  }'t	          t          j        t          |(||$         |d|$z            ||%         |d|%z                                d|          })t	          t          j        t          |(||&         |d|&z            ||'         |d|'z                                d|          }*t          |)|*dz             D ]q}+|+|z
  |z  |(|z
  |z  z   },d}-|,dk     r>|s|s|+|z
  |z  |(|z
  |z  z   dk    r$t          j        |+|z
  dz  |(|z
  dz  z             }.nZ|,|k    r)|s|r$t          j        |+|z
  dz  |(|z
  dz  z             }.ngt          |+|z
  |z  |(|z
  |z  z             }.|sF|sD| |+|z
  |z  |(|z
  |z  z   cxk    rdk    r'n n$t          |+|z
  | z  |(|z
  |!z  z             |k    rd}-dt          d| |z
  z  ||.          z
  }/|/|z  }/|-rBt          |+|z
  | z  |(|z
  |!z  z             }0dt          d| |z
  z  ||0          z
  }1|1|z  }1|/|1z
  }/|/dk    r|r|(|+fn|+|(f\  }2}3 |||2|3|/g|R   smdS )aD  Draw an antialiased line segment.

        If overwrite=True can overwrite each pixel multiple times because
        using max for the overwriting.  If False can only write each pixel
        once per segment and its previous segment.
        Argument xm, ym are only valid if overwrite and segment_start are False.
        Nr{  r_  r   r   r   r               rz  TF)
absfloatmathsqrtrx  ceilfloorranger  r  )4r   r.   ire  rf  rg  rh  segment_startsegment_endxmymr   nxnybufferrK   flip_xyscaleaa	halfwidth
flip_orderalongxalongylengthrightxrightyrH   rJ   lowindexprev_alongxprev_alongyprev_lengthprev_rightxprev_rightyystartyendlllurlrurW   xleftxrightrV   alongprev_correctiondistancevalueprev_distance
prev_valuerY  rZ  s4                                                       r   _full_antialiasz._build_full_antialias.<locals>._full_antialias<  sT    88bF
 be**s2b5zz) 	BBB ZEJb)	 "W6r!5b2g
 rBwrBw619vqy011&&  	:Y&99F1IY&(899F1IY&(899F1IY&99F1IY&99F1IY&(899F1IY&(899F1IY&99F1IIY&99F1IY&(899F1IY&(899F1IY&99F1IY&99F1IY&(899F1IY&(899F1IY&99F1I!t!t 	$t$D  	+GGqqHHGGqqH 
	! 
	!r'Kr'K)KN[!^$CDDKS  {*{*)*l 	 	&X"677DAAdjXaZ1,<(<!=>>4HH1f\1f\vtAv&& ,	= ,	=AX~~!fQVn"4"41f\X~~!fQVn"4"41f\49\6":vad|VBZ"&G &G H HIJDR REDJ|6":vad|VBZ"(G (G H HIJDR RF5&(++  =  =2v2v5"'3;;  !M !adK5G1R4Q\J\5\_b5b5b#'9adQY!B$-B#C#C V^^  !K !#'9adQY!B$-B#C#C   #AbD&=AbD&=#@AAH$ /] /(LQrT;,>!B$AS,SZZZZWZZZZZZ2{ 2adK5G GHHIUU*.k#zB*?HUUU" /$'2{(:adK=O(O$P$PM!${3
R3H)Ub'c'c!cJ%'J!J.E3;;'.:aVVQFFBF1b"e<m<<<<A =,	= ,	=r   ra  )r+   r  s     r   _build_full_antialiasr  :  s2    
T= T=  UT=l r   c                6    t           | d                         }|S )zASpecialize a bresenham kernel for a given append/axis combinationc                   ||
z
  }|dk    |dk     z
  }t          |          dz  }||z
  }|dk    |dk     z
  }t          |          dz  }|s||z  s || |
|g|R   dS |	r || |
|g|R   ||k    rKd|z  |z
  }|
|k    r;|dk    r|s|dk    r|d|z  z  }||z  }|d|z  z  }|
|z  }
 || |
|g|R   |
|k    9dS dS d|z  |z
  }||k    r;|dk    r|s|dk    r|d|z  z  }|
|z  }
|d|z  z  }||z  } || |
|g|R   ||k    9dS dS )zDraw a line segment using Bresenham's algorithm
        This method plots a line segment with integer coordinates onto a pixel
        grid.
        r   r   N)r  )r  rC   rD   rE   rF   rG   rH   rI   rJ   r  re  rf  rg  rh  clippedr   rK   dxixdyiyerrors                         r   
_bresenhamz$_build_bresenham.<locals>._bresenham  s    "W1fa WWq["W1fa WWq[  	R 	F1b"-}----F 	.F1b"-}----88FRKE((A::5:BFFQVOE"HBRbq"b1=1111 (((((( FRKE((A::5:BFFQVOE"HBRbq"b1=1111 ((((((r   ra  )r+   r  s     r   _build_bresenhamr    s/    
(2 (2  U(2R r   c                     dk    rdt          |          nt          |          dt          | fd                        }|S )zESpecialize a line plotting kernel for a given append/axis combinationrz  Nc                8   d}t          |          s-t          |          st          |          st          |          rd}t          |||||||||	  	        \  }}}}}}}|s|p|}|	p|}	 '||||||||||
  
        \  }} '||||||||||
  
        \  }}&dk    ra|	rdx}} n '||||||||||
  
        \  }} t          ||z
  |z            }!t          ||z
  |z            }" $&(| |||||	|
|| %|!|"|g|R   d S  #| |||||||||	|||||%g|R   d S d S )NFTrz  )r   rq  rX  ))r  rC   rD   rE   rF   rG   rH   rI   rJ   r  r  re  rf  rg  rh  r  r  r  rK   ri  x0_1x1_1y0_1y1_1rp  ro  r  x0_2y0_2x1_2y1_2xm_2ym_2r  r  r  r  r   r   r-   r.   s)                                      r   r0   z)_build_draw_segment.<locals>.draw_segment  s   &  ":: 	 	vbzz 	VBZZ 	D $dD"b"b$GG 	AdD$m[  	<#2{G):]M'BBdD$d JD$ (BBdD$d JD$ C  H"%%D44!/BBdD$B"H "HJD$D4K+,,D4K+,,
Iq$dD -{D$ "B@1>@ @ @ @ @ @ 
1b"b"dD$($dD"F<-:< < < < < <+	< 	<r   )r  r  r
   )r   r-   r+   r   r.   r0   r  r  s   `` `` @@r   r*   r*     s     C
/0DEE%&:;;

2< 2< 2< 2< 2< 2< 2< 2< 2<  U2<h r   c                     |d ut           | fd                        t           |fd                        }t          j        |fd                        }||fS )Nc                   |
|          }||          }|
| dz            }|| dz            }| dk    r|	n/t          |
| dz
                     pt          || dz
                     }| t          |
          dz
  k    p/t          |
| dz                      pt          || dz                      }|srd}d}n|
| dz
           }|| dz
           } | |||||||||||||||||g|R   d S Nr   r   r   rz  r   ro   )r  rC   rD   rE   rF   rG   rH   rI   rJ   rB   rL   rM   r  rK   re  rg  rf  rh  r  r  r  r  r0   r/   s                         r   perform_extend_linez5_build_extend_line_axis0.<locals>.perform_extend_lineK  s,    UUAYAY'(Avv AE++@vbQi/@/@ 	 CGGAI~L&AaC//LVBqsG__ 	O 	BBBAaCBAaCBQBBdD$"KRRV	5&3	5 	5 	5 	5 	5 	5r   c                    |du}|rt          j        d          nd}|j        d         }t          |dz
            D ]} || ||||||||
||	|g|R   dS )2Aggregate along a line formed by ``xs`` and ``ys``N   r   r   r   emptyr7   r  )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   rB   r    rK   r,   r  nrowsr  r  s                    r   rO   z,_build_extend_line_axis0.<locals>.extend_cpuc  s    
 &T1	 )3!tuqy!! 	L 	LA2r2r4tT *BFL=JL L L L L	L 	Lr   c                    |d u}|r*t           j                            dt          j                  nd }t          j        d          }||j        d         dz
  k     r || ||||||||
||	|g|R   d S d S Nr  r   r   r   localr   nb_typesfloat64gridr7   )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   rB   r    rK   r,   r  r  r  s                   r   rP   z-_build_extend_line_axis0.<locals>.extend_cudao  s     &T1	:CM!!!X%5666IaLLrx{Q2r2r4tT *BFL=JL L L L L L r   r
   r   jit)r0   r+   r!   rO   rP   r  r/   s   `    @@r   rU   rU   H  s    -T9O
5 5 5 5 5  U5, L L L L  UL 
XL L L L  XL {""r   c                (   	
 ||\  |d ut           | fd                        
t           |
fd                        }	fd}t           |
fd                        	t          j        |
fd                        }r||fS ||fS )Nc                   || |f         }|| |f         }|| dz   |f         }|| dz   |f         }| dk    r|
n3t          || dz
  |f                   pt          || dz
  |f                   }| t          |          dz
  k    p3t          || dz   |f                   pt          || dz   |f                   }|srd}d}n|| dz
  |f         }|| dz
  |f         } | ||||||||	|||||||||g|R   d S r  r  )r  jrC   rD   rE   rF   rG   rH   rI   rJ   rB   rL   rM   r  rK   re  rg  rf  rh  r  r  r  r  r0   r/   s                          r   r  z;_build_extend_line_axis0_multi.<locals>.perform_extend_line  sX    1X1XAq\Aq\'(Avv AE1H..F&AE1H2F2F 	 CGGAI~R&AaCF*<*<Rr!A#q&z@R@R 	O 	BBBAaCFBAaCFBQBBdD$"KRRV	5&3	5 	5 	5 	5 	5 	5r   c                    |du}|rt          j        d          nd}|j        \  }}t          |          D ]-}t          |dz
            D ]} ||| ||||||||
||	|g|R   .dS )r  Nr  r   r  )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   rB   r    rK   r,   r  r  ncolsr  r  r  s                      r   rO   z2_build_extend_line_axis0_multi.<locals>.extend_cpu  s    
 &T1	 )3!txuu 	P 	PA519%% P P##Aq"b"b$dD$.BPANP P P P PP	P 	Pr   c                    t          |d                   }t          d |d|         D                       } | |||||||||	|
||g|R   dS )r  r   c              3  B   K   | ]}||                                 fV  d S r   copyra   aggs     r   r   zT_build_extend_line_axis0_multi.<locals>.extend_cpu_antialias_2agg.<locals>.<genexpr>  /      TTcchhjj 1TTTTTTr   Nro   r   )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   rB   r    rK   n_aggsaggs_and_accumscpu_antialias_2agg_impls                  r   extend_cpu_antialias_2aggzA_build_extend_line_axis0_multi.<locals>.extend_cpu_antialias_2agg  s     &q)**TT]7F7=STTTTTBBdD$B *,=	`Q^	` 	` 	` 	` 	` 	`r   c                >   |d u}|rt          j        d          nd }|j        \  }}t          |          D ]Z}t          |dz
            D ]} ||| ||||||||
||	|g|R   |dk    r d S  ||dk               ||dz
  k     r |           [ |           d S r  r  )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   rB   r    r  rK   r,   r  r  r  r  r  aa_stage_2_accumulateaa_stage_2_clearaa_stage_2_copy_backr  s                       r   r  z?_build_extend_line_axis0_multi.<locals>.cpu_antialias_2agg_impl  s    &T1	 )3!txuu 	2 	2A519%% P P##Aq"b"b$dD$.BPANP P P P P zz!!/1a4888519}}  111_-----r   c                   |d u}|r*t           j                            dt          j                  nd }t          j        d          \  }}||j        d         dz
  k     r)||j        d         k     r ||| ||||||||
||	|g|R   d S d S d S Nr  r   r   r   r  )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   rB   r    rK   r,   r  r  r  r  s                    r   rP   z3_build_extend_line_axis0_multi.<locals>.extend_cuda  s     &T1	:CM!!!X%5666y||1rx{Q1rx{??1b"b"dD$ *BFL=JL L L L L L ??r   r  r0   r+   r!   rO   r  rP   r  r  r  r  r  r/   s   `     @@@@@@r   r   r   }  sD   *H_E/1E-T9O
5 5 5 5 5  U5, 
P 
P 
P 
P  U
P` ` ` ` ` . . . . . . .  U., 
XL L L L  XL  '(+55;&&r   c                (   	
 ||\  |d ut           | fd                        
t           |
fd                        }	fd}t           |
fd                        	t          j        |
fd                        }r||fS ||fS )Nc                   |
| |f         }|| |f         }|
| |dz   f         }|| |dz   f         }|dk    p3t          |
| |dz
  f                   pt          || |dz
  f                   }||
j        d         dz
  k    p3t          |
| |dz   f                   pt          || |dz   f                   }|srd}d}n|
| |dz
  f         }|| |dz
  f         } | ||||||||	|||||||||g|R   d S r  )r   r7   r  r  rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r  rK   re  rg  rf  rh  r  r  r  r  r0   r/   s                         r   r  zC_build_extend_line_axis1_none_constant.<locals>.perform_extend_line  sX    1X1X1q5\1q5\aHF2aQh<00HF2aQh<4H4H 	 BHQKM)VfR1Q3Z.@.@VF2aQRSTQTf:DVDV 	O 	BBBAqsFBAqsFBQBBdD$"KRRV	5&3	5 	5 	5 	5 	5 	5r   c                    |
d u}|rt          j        d          nd }|j        d         }t          |j        d                   D ],}t          |dz
            D ]} ||| |||||||||	|g|R   -d S r  r  rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r    rK   r,   r  r  r  r  r  s                    r   rO   z:_build_extend_line_axis1_none_constant.<locals>.extend_cpu       &T1	 )3!trx{## 	 	A519%%  ##q"b"b$dDF%2    	 	r   c                    t          |
d                   }t          d |d |         D                       } | |||||||||	|
|g|R   d S )Nr   c              3  B   K   | ]}||                                 fV  d S r   r  r  s     r   r   z\_build_extend_line_axis1_none_constant.<locals>.extend_cpu_antialias_2agg.<locals>.<genexpr>  r  r   r  rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r    rK   r  r  r  s                 r   r  zI_build_extend_line_axis1_none_constant.<locals>.extend_cpu_antialias_2agg      &q)**TT]7F7=STTTTTBBdD$B 1?	TER	T 	T 	T 	T 	T 	Tr   c                   |
d u}|rt          j        d          nd }|j        d         }t          |j        d                   D ]o}t          |dz
            D ]} ||| |||||||||	|g|R   |j        d         dk    r d S  ||dk               ||j        d         dz
  k     r |           p |           d S r  r  rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r    r  rK   r,   r  r  r  r  r  r  r  r  s                     r   r  zG_build_extend_line_axis1_none_constant.<locals>.cpu_antialias_2agg_impl  s!    &T1	 )3!trx{## 	2 	2A519%% D D##Aq"b"b$dD$&FD5BD D D D D x{a!!/1a488828A;?""  111_-----r   c                   |
d u}|r*t           j                            dt          j                  nd }t          j        d          \  }}||j        d         k     r+||j        d         dz
  k     r ||| |||||||||	|g|R   d S d S d S r  r  rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r    rK   r,   r  r  r  r  s                   r   rP   z;_build_extend_line_axis1_none_constant.<locals>.extend_cuda&  s     &T1	:CM!!!X%5666y||1rx{??q28A;?221b"b"dD$b"&      ?22r   r  r  s   `     @@@@@@r   r   r     s:   *H_E/1E-T9O
5 5 5 5 5  U52 
 
 
 
  U
T T T T T . . . . . . .  U.* 
X	 	 	 	  X	  '(+55;&&r   rT  boolc                0   	
 ||\  	|d ut           | fd                        t           |fd                        }
fd}t           |	fd                        
t          j        |fd                        }r||fS ||fS )Nc                $   |
|         }|
|dz            }r||| f         }||dz   | f         }|dk    p1t          |
|dz
                     pt          ||dz
  | f                   }|t          |
          dz
  k    p1t          |
|dz                      pt          ||dz   | f                   }n|| |f         }|| |dz   f         }|dk    p1t          |
|dz
                     pt          || |dz
  f                   }|t          |
          dz
  k    p1t          |
|dz                      pt          || |dz   f                   }|srd}d}n'|
|dz
           }r||dz
  | f         n|| |dz
  f         } | ||||||||	|||||||||g|R   d S r  r  )r  r  rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r  rK   re  rf  rg  rh  r  r  r  r  r0   rT  r/   s                         r   r  z@_build_extend_line_axis1_x_constant.<locals>.perform_extend_line?  s   
 UAY 		TAqDBAE1HB!VQr!a%y(9(9QVBq1uaxL=Q=QMB	>SfR!WooS1Q3PQ6
ASASKKAqDBAq1uHB!VQr!a%y(9(9QVBq!a%xL=Q=QMB	>SfR!WooS1aPQc6
ASASK 	9O 	9BBBAaCB(8AaCFbAaCjBQBBdD$"KRRV	5&3	5 	5 	5 	5 	5 	5r   c                    |
d u}|rt          j        d          nd }r|	j        n|	j        d d d         \  }}t          |          D ],}t          |dz
            D ]} ||| |||||||||	|g|R   -d S )Nr  rQ  r   r  )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r    rK   r,   r  r  r  r  r  r  rT  s                     r   rO   z7_build_extend_line_axis1_x_constant.<locals>.extend_cpu\  s     &T1	 )3!t#,@rxx"(44R4.uu 	 	A519%%  ##q"b"b$dD"b&S`    	 	r   c                    t          |
d                   }t          d |d |         D                       } | |||||||||	|
|g|R   d S )Nr   c              3  B   K   | ]}||                                 fV  d S r   r  r  s     r   r   zY_build_extend_line_axis1_x_constant.<locals>.extend_cpu_antialias_2agg.<locals>.<genexpr>l  r  r   r  r  s                 r   r  zF_build_extend_line_axis1_x_constant.<locals>.extend_cpu_antialias_2aggi  r  r   c                   |
d u}|rt          j        d          nd }|	j        d         }t          |	j        d                   D ]o}t          |dz
            D ]} ||| |||||||||	|g|R   |	j        d         dk    r d S  ||dk               ||	j        d         dz
  k     r |           p |           d S r  r  r	  s                     r   r  zD_build_extend_line_axis1_x_constant.<locals>.cpu_antialias_2agg_implp  s    &T1	 )3!trx{## 	2 	2A519%%  ##q"b"b$dD"b*    
 x{a!!/1a488828A;?""  111_-----r   c                "   |
d u}|r*t           j                            dt          j                  nd }t          j        d          \  }}r|	j        n|	j        d d d         \  }}||k     r ||dz
  k     r ||| |||||||||	|g|R   d S d S d S )Nr  r   rQ  r   r  )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r    rK   r,   r  r  r  r  r  r  rT  s                     r   rP   z8_build_extend_line_axis1_x_constant.<locals>.extend_cuda  s     &T1	:CM!!!X%5666y||1#,@rxx"(44R4.uu99UQY1b"b"dD$b"fO\      9r   r  )r0   r+   r!   rT  rO   r  rP   r  r  r  r  r  r/   s   `  `   @@@@@@r   r   r   9  sJ   *H_E/1E-T9O
5 5 5 5 5 5  U56 	 	 	 	 	  U	T T T T T . . . . . . .  U.. 
X	 	 	 	 	  X	  '(+55;&&r   c                (   	
 ||\  |d ut           | fd                        
t           |
fd                        }	fd}t           |
fd                        	t          j        |
fd                        }r||fS ||fS )Nc                   |
| |f         }||         }|
| |dz   f         }||dz            }|dk    p1t          |
| |dz
  f                   pt          ||dz
                     }|t          |          dz
  k    p1t          |
| |dz   f                   pt          ||dz                      }|srd}d}n|
| |dz
  f         }||dz
           } | ||||||||	|||||||||g|R   d S r  r  r   s                         r   r  z@_build_extend_line_axis1_y_constant.<locals>.perform_extend_line  s@   
 1XU1q5\AY aEF2aQh<00EF2a!e94E4E 	 CGGAI~O&AqsF*<*<Or!A#w 	O 	BBBAqsFBAaCBQBBdD$"KRRV	5&3	5 	5 	5 	5 	5 	5r   c                    |
d u}|rt          j        d          nd }|j        d         }t          |j        d                   D ],}t          |dz
            D ]} ||| |||||||||	|g|R   -d S r  r  r  s                    r   rO   z7_build_extend_line_axis1_y_constant.<locals>.extend_cpu  r  r   c                    t          |
d                   }t          d |d |         D                       } | |||||||||	|
|g|R   d S )Nr   c              3  B   K   | ]}||                                 fV  d S r   r  r  s     r   r   zY_build_extend_line_axis1_y_constant.<locals>.extend_cpu_antialias_2agg.<locals>.<genexpr>  r  r   r  r  s                 r   r  zF_build_extend_line_axis1_y_constant.<locals>.extend_cpu_antialias_2agg  r  r   c                   |
d u}|rt          j        d          nd }|j        d         }t          |j        d                   D ]o}t          |dz
            D ]} ||| |||||||||	|g|R   |j        d         dk    r d S  ||dk               ||j        d         dz
  k     r |           p |           d S r  r  r	  s                     r   r  zD_build_extend_line_axis1_y_constant.<locals>.cpu_antialias_2agg_impl  s    &T1	 )3!trx{## 	2 	2A519%%  ##q"b"b$dDF%2    
 x{a!!/1a488828A;?""  111_-----r   c                   |
d u}|r*t           j                            dt          j                  nd }t          j        d          \  }}||j        d         k     r+||j        d         dz
  k     r ||| |||||||||	|g|R   d S d S d S r  r  r  s                   r   rP   z8_build_extend_line_axis1_y_constant.<locals>.extend_cuda  s     &T1	:CM!!!X%5666y||1rx{??q28A;?221b"b"dD$B!.      ?22r   r  r  s   `     @@@@@@r   r
  r
    s:   *H_E/1E-T9O
5 5 5 5 5  U52 
 
 
 
  U
T T T T T . . . . . . .  U.0 
X	 	 	 	  X	  '(+55;&&r   c                    	
 ||\  |d u
fd}t           | 
fd                        	fd}t           | fd                        	
r|S |S )Nc                j    |j         }|j        }|	j         }|	j        } | ||||||||||||
g|R   d S r   )start_indicesr  )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r    rK   	x_start_ix_flat	y_start_iy_flatextend_cpu_numbas                   r   rO   z3_build_extend_line_axis1_ragged.<locals>.extend_cpu  sl     $	$	BD$dvy&2C	
FS	
 	
 	
 	
 	
 	
r   c                h   |d u}|rt          j        d          nd }t          |          }t          |	          }t          |          }t          |          D ]V}||         }||dz
  k     r||dz            n|}|
|         }||dz
  k     r|
|dz            n|}t	          ||z
  ||z
            }t          |dz
            D ]}|	||z            }|||z            }|	||z   dz            }|||z   dz            }|dk    p5t          |	||z   dz
                     pt          |||z   dz
                     }||dz
  k    p5t          |	||z   dz                      pt          |||z   dz                      }|s#rd} d}!n|	||z   dz
           } |||z   dz
           }! "|| |||||||||||||| |!|g|R   Xd S Nr  r   r   r   rz  r   r  ro   r  r   r   )$rC   rD   rE   rF   rG   rH   rI   rJ   r  r  r   r!  r    rK   r,   r  r  
x_flat_len
y_flat_lenr  x_start_indexx_stop_indexy_start_indexy_stop_indexsegment_lenr  re  rg  rf  rh  r  r  r  r  r0   r/   s$                                     r   r"  z9_build_extend_line_axis1_ragged.<locals>.extend_cpu_numba  s{    &T1	 )3!tI[[
[[
u -	= -	=A%aLM 519}} &a!e,,!+ 
 &aLM 519}} &a!e,,!+ 
 l]:*]:< <K ;?++ = =MA-.MA-.MA-12MA-12 a >vma&7!&;<==>vma&7!&;<==  k!m+ >vma&7!&;<==>vma&7!&;<==  ! 7O 7BBB 1A 56B 1A 56BQBBdD$*KRRV=.;= = = = =5=#-	= -	=r   c                    |j         }|j        }|	j         }|	j        }t          |
d                   }t          d |d |         D                       } | ||||||||||||
|g|R   d S )Nr   c              3  B   K   | ]}||                                 fV  d S r   r  r  s     r   r   zU_build_extend_line_axis1_ragged.<locals>.extend_cpu_antialias_2agg.<locals>.<genexpr>W  r  r   )r  r  ro   r   )rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r    rK   r  r  r   r!  r  r  extend_cpu_numba_antialias_2aggs                     r   r  zB_build_extend_line_axis1_ragged.<locals>.extend_cpu_antialias_2aggM  s     $	$	&q)**TT]7F7=STTTTT''BD$dIvv0/	
DQ	
 	
 	
 	
 	
 	
r   c                   |d u}|rt          j        d          nd }t          |          }t          |	          }t          |          }t          |          D ]^}||         }||dz
  k     r||dz            n|}|
|         }||dz
  k     r|
|dz            n|}t	          ||z
  ||z
            }t          |dz
            D ]}|	||z            }|||z            }|	||z   dz            }|||z   dz            }|dk    p5t          |	||z   dz
                     pt          |||z   dz
                     }||dz
  k    p5t          |	||z   dz                      pt          |||z   dz                      }  $|| ||||||||| ||||dd|g|R   |dk    r d S  !||dk               ||dz
  k     r "|           ` #|           d S r$  r%  )%rC   rD   rE   rF   rG   rH   rI   rJ   r  r  r   r!  r    r  rK   r,   r  r  r&  r'  r  r(  r)  r*  r+  r,  r  re  rg  rf  rh  r  r  r  r  r  r0   s%                                    r   r/  zH_build_extend_line_axis1_ragged.<locals>.extend_cpu_numba_antialias_2agg^  s    &T1	 )3!tI[[
[[
u .	2 .	2A%aLM 519}} &a!e,,!+ 
 &aLM 519}} &a!e,,!+ 
 l]:*]:< <K ;?++ ? ?MA-.MA-.MA-12MA-12 a >vma&7!&;<==>vma&7!&;<==  k!m+ >vma&7!&;<==>vma&7!&;<==  QBBdD$*KRR #v?0=? ? ? ? ? zz!!/1a4888519}}  111_-----r   ra  r0   r+   r!   rO   r  r  r  r  r"  r/  r/   s   `    @@@@@@r   r  r    s    *H_E/1E-T9O
 
 
 
 
 7= 7= 7= 7= 7=  U7=r
 
 
 
 
" ;. ;. ;. ;. ;. ;. ;.  U;.z  ((r   c                    	
 ||\  |d u
fd}t           | 
fd                        	fd}t           | fd                        	
r|S |S )Nc                   |j         }|                                }|j        }t          |          dk    r|\  }}n)|d         }t	          j        t          |                    }|j        |j                            ||||f          }n$t	          j        dt          |          d          } | |||||||||||||	|
g|R   d S )Nr   r   uint32dtype)	buffer_valuesisnabuffer_offsetsro   r   arange_sindexsindex
intersects)rC   rD   rE   rF   rG   rH   rI   rJ   r2  r.  r    rK   r   missingoffsetsoffsets0offsets1eligible_indsr"  s                     r   rO   z5_build_extend_line_axis1_geometry.<locals>.extend_cpu  s     '--//)w<<1!(Hhh qzHyX//H' %O66dD$7OPPMM IaXhGGGMBD$dGXx+	
 /<	
 	
 	
 	
 	
 	
r   c                   |d u}|rt          j        d          nd }|D ]}|	|         r|
|         }|
|dz            }t          ||          D ]}||         }||dz            }t          ||dz
  d          D ]t}||         }t          j        |          s ||dz            }t          j        |          s@||dz            }t          j        |          s`||dz            }t          j        |          s||k    r| pA||k    o;t          j        ||dz
                      pt          j        ||dz
                      }| r	||dz
  k    pD||dz
  k     o;t          j        ||dz                       pt          j        ||dz                       }|s"rd}d} n5||k    r|r||dz
           }||dz
           } n||dz
           }||dz
           }  !|| ||||||||||||||| |g|R   vd S Nr  r   r   r   r  r  rz  r   r  r  isfinite)#rC   rD   rE   rF   rG   rH   rI   rJ   r   r>  r@  rA  rB  r.  r    rK   r,   r  r  start0stop0r  start1stop1kre  rg  rf  rh  r  r  r  r  r0   r/   s#                                    r   r"  z;_build_extend_line_axis1_geometry.<locals>.extend_cpu_numba  s    &T1	 )3!t 4	A 4	AAqz a[FQUOE65)) -A -A!! Qvuqy!44 )A )AAB;r?? ! AB;r?? ! AB;r?? ! AB;r?? !  &[=-= aZ `"$+fQUm"<"<<^BKPVWX[\W\P]D^D^@^ " ".->!uQw, aq[ `"$+fQUm"<"<<^BKPVWX[\W\P]D^D^@^   % ) )  f#E!G_#E!G_#AaC[#AaC[ LBBD$d!.RR!#RA2?A A A A AO)A	-A4	A 4	Ar   c                    |j         }|                                }|j        }t          |          dk    r|\  }}n)|d         }t	          j        t          |                    }|j        |j                            ||||f          }n$t	          j        dt          |          d          }t          |
d                   }t          d |d |         D                       } | |||||||||||||	|
|g|R   d S )Nr   r   r4  r5  c              3  B   K   | ]}||                                 fV  d S r   r  r  s     r   r   zW_build_extend_line_axis1_geometry.<locals>.extend_cpu_antialias_2agg.<locals>.<genexpr>  r  r   )
r7  r8  r9  ro   r   r:  r;  r<  r=  r   )rC   rD   rE   rF   rG   rH   rI   rJ   r2  r.  r    rK   r   r>  r?  r@  rA  rB  r  r  r/  s                       r   r  zD_build_extend_line_axis1_geometry.<locals>.extend_cpu_antialias_2agg  s4    '--//)w<<1!(Hhh qzHyX//H' %O66dD$7OPPMM IaXhGGGM&q)**TT]7F7=STTTTT''BD$dGXx+_	
 @M	
 	
 	
 	
 	
 	
r   c                   |d u}|rt          j        d          nd }d}|D ]}|	|         r|
|         }|
|dz            }t          ||          D ]b}||         }||dz            }t          ||dz
  d          D ]6}||         }t          j        |          s ||dz            }t          j        |          s@||dz            }t          j        |          s`||dz            }t          j        |          s||k    r| pA||k    o;t          j        ||dz
                      pt          j        ||dz
                      }| r	||dz
  k    pD||dz
  k     o;t          j        ||dz                       pt          j        ||dz                       }  $|| ||||||||| ||||dd|g|R   8d !||           d	} "|            #|           d S )
Nr  Tr   r   r   r  r  rz  FrE  )%rC   rD   rE   rF   rG   rH   rI   rJ   r   r>  r@  rA  rB  r.  r    r  rK   r,   r  
first_passr  rG  rH  r  rI  rJ  rK  re  rg  rf  rh  r  r  r  r  r  r0   s%                                    r   r/  zJ_build_extend_line_axis1_geometry.<locals>.extend_cpu_numba_antialias_2agg&  s    &T1	 )3!t
 .	. .	.Aqz a[FQUOE65)) #C #C!! Qvuqy!44 C CAB;r?? ! AB;r?? ! AB;r?? ! AB;r?? !  &[=-= aZ `"$+fQUm"<"<<^BKPVWX[\W\P]D^D^@^ " ".->!uQw, aq[ `"$+fQUm"<"<<^BKPVWX[\W\P]D^D^@^   !LBBD$d!.RR!$c6C4AC C C C C;CB "!/:>>>J_----_-----r   ra  r1  s   `    @@@@@@r   r1  r1    s    *H_E/1E-T9O
 
 
 
 
< ;A ;A ;A ;A ;A  U;Az
 
 
 
 
B 9. 9. 9. 9. 9. 9. 9.  U9.v  ((r   c                    	
 ||\  |d udd l fd	fd}t          | fd                        	
fd}t          | fd                        
r|S |S )Nr   c                D                        |           }|d         }|j        j        j        j        j        j        j        j        fvrt          dt          |                     |d                                         }|j        j        k    r2|d         d         }t          j
        t          |                    }d}nR|j        j        k    r|d         \  }}d}n4|j        j        k    r|d         \  }}}||         }d}n|d         \  }}d}||||fS )Nr   zlCanvas.line supports GeoPandas geometry types of LINESTRING, MULTILINESTRING, MULTIPOLYGON and POLYGON, not r   r   FT)to_ragged_arrayGeometryType
LINESTRINGMULTILINESTRINGMULTIPOLYGONPOLYGONrn   reprravelr   r:  ro   )	r2  raggedgeometry_typecoordsr?  outer_offsetsr.  temp_offsetsshapelys	           r   _process_geometryz=_build_extend_line_axis1_geopandas.<locals>._process_geometryq  sR   ((22q	 +W-A-Q -w/C/K!
 
 
 G15m1D1DG GH H H "" G0;;;QilGIc'll33M LLg2BBB%+AY"G] LLg2???39!90G\=(7MLL%+AY"G]Lw|;;r   c
                R     |          \  }}}} | ||||||||||||	g|
R   d S r   r'   )rC   rD   rE   rF   rG   rH   rI   rJ   r2  r    rK   r\  r?  r]  r.  r`  r"  s                  r   rO   z6_build_extend_line_axis1_geopandas.<locals>.extend_cpu  sh     8I7H7R7R4BD$dFG]T`	/ -	/ 	/ 	/ 	/ 	/ 	/r   c                   |d u}|rt          j        d          nd }t          |
          dz
  }t          |          D ]}|
|         }|
|dz            }t          ||          D ]}|	|         }|	|dz            }t          d|z  d|z  dz
  d          D ]q}||         }||dz            }||dz            }||dz            }t          j        |          r<t          j        |          r(t          j        |          rt          j        |          s}||k    r| pA||k    o;t          j        ||dz
                      pt          j        ||dz
                      }| r	||dz
  k    pD||dz
  k     o;t          j        ||dz                       pt          j        ||dz                       }|s!rd}d}n5||k    r|r||dz
           }||dz
           }n||dz
           }||dz
           }  || ||||||||||||||||g|R   sd S rD  r   r  ro   r  rF  )"rC   rD   rE   rF   rG   rH   rI   rJ   r   r?  r]  r.  r    rK   r,   r  n_multilinesr  rG  rH  r  rI  rJ  rK  re  rg  rf  rh  r  r  r  r  r0   r/   s"                                   r   r"  z<_build_extend_line_axis1_geopandas.<locals>.extend_cpu_numba  s    &T1	 )3!t=))A-|$$ )	A )	AA"1%F!!a%(E65)) %A %A Aqx51a88 !A !AABABABABKOO !B !KOO!02B!  &[=-= aZ `"$+fQUm"<"<<^BKPVWX[\W\P]D^D^@^ " ".->!uQw, aq[ `"$+fQUm"<"<<^BKPVWX[\W\P]D^D^@^   % ) )  f#E!G_#E!G_#AaC[#AaC[ LBBD$d!.RR!#RA2?A A A A A?!A	%A	)	A )	Ar   c
                     |          \  }}}}t          |	d                   }t          d |
d |         D                       } | ||||||||||||	|g|
R   d S )Nr   c              3  B   K   | ]}||                                 fV  d S r   r  r  s     r   r   zX_build_extend_line_axis1_geopandas.<locals>.extend_cpu_antialias_2agg.<locals>.<genexpr>  r  r   r  )rC   rD   rE   rF   rG   rH   rI   rJ   r2  r    rK   r\  r?  r]  r.  r  r  r`  r/  s                    r   r  zE_build_extend_line_axis1_geopandas.<locals>.extend_cpu_antialias_2agg  s     8I7H7R7R4&q)**TT]7F7=STTTTT''BD$dFG]T`	@1>	@ 	@ 	@ 	@ 	@ 	@r   c                   |d u}|rt          j        d          nd }t          |
          dz
  }d}t          |          D ]}|
|         }|
|dz            }t          ||          D ]e}|	|         }|	|dz            }t          d|z  d|z  dz
  d          D ]3}||         }||dz            }||dz            }||dz            }t          j        |          r<t          j        |          r(t          j        |          rt          j        |          s}||k    r| pA||k    o;t          j        ||dz
                      pt          j        ||dz
                      }| r	||dz
  k    pD||dz
  k     o;t          j        ||dz                       pt          j        ||dz                       } #|| |||||||||||||dd|g|R   5g  ||           d	} !|            "|           d S )
Nr  r   Tr   r   r  r  rz  Frc  )$rC   rD   rE   rF   rG   rH   rI   rJ   r   r?  r]  r.  r    r  rK   r,   r  rd  rO  r  rG  rH  r  rI  rJ  rK  re  rg  rf  rh  r  r  r  r  r  r0   s$                                   r   r/  zK_build_extend_line_axis1_geopandas.<locals>.extend_cpu_numba_antialias_2agg  s    &T1	 )3!t=))A-
|$$ $	. $	.A"1%F!!a%(E65)) C C Aqx51a88 C CABABABABKOO !B !KOO!02B!  &[=-= aZ `"$+fQUm"<"<<^BKPVWX[\W\P]D^D^@^ " ".->!uQw, aq[ `"$+fQUm"<"<<^BKPVWX[\W\P]D^D^@^   !LBBD$d!.RR!$c6C 5BC C C C C+C4 "!/:>>>J_----_-----r   )r_  r
   )r0   r+   r!   rO   r  r`  r  r  r  r"  r/  r_  r/   s   `    @@@@@@@@r   r;  r;  i  s#   *H_E/1E-T9O NNN< < < < <B/ / / / / / 0A 0A 0A 0A 0A  U0Ad	@ 	@ 	@ 	@ 	@ 	@ .. .. .. .. .. .. ..  U..`  ((r   )F)rT  r  )9
__future__r   r  numpyr   toolzr   datashader.antialiasr   datashader.glyphs.pointsr   r   datashader.utilsr   r	   r
   numbar   numba.typestypesr  r8   cupyr   transfer_functions._cuda_utilsr   r  spatialpandas	Exceptionr   r1   r3   rY   r   r   r   r  r  r5  r=  r)   rq  rd  rx  r  r  r  r  r*   rU   r   r   r   r
  r  r1  r;  r'   r   r   <module>ru     s   " " " " " "            . . . . . . > > > > > > > > 2 2 2 2 2 2 2 2 2 2            KKK:::::::   D	BIII
   MMM) ) ) ) ) ) ) ) 1 1 1, , , , ,
, , , ,^Y Y Y Y YZ!1 Y Y Yxl l l l l- l l l^G G G G G* G G GTG G G G G* G G GTB B B B Bz#3 B B BJ4 4 4 4 4'7 4 4 4n! ! ! ! !(8 ! ! !HD D D D D D D DN+# +# +# +#\ -< -< -<`   & " " "
   
 " " "Z Z Zz- - -^@ @ @D2# 2# 2#jY' Y' Y'x]' ]' ]'B TY`' `' `' `' `'F`' `' `'Fa a aHC C CLe e e e es#   A	 	AAA   A*)A*