Ë
    ¨eh=0  ã                   ó¼   — d Z ddlZddlZddlZddlmZ ddlmZ ddl	m
Z
mZ ddlmZmZmZ ddlmZ dd	lmZ d
„ Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)z/
An experimental support for curvilinear grid.
é    N)Ú_api)ÚPath)ÚAffine2DÚIdentityTransformé   )Ú_FixedAxisArtistHelperBaseÚ_FloatingAxisArtistHelperBaseÚGridHelperBase)Ú
AxisArtist)Ú
GridFinderc                 ó*  — t        j                  t        «      j                  dz  } | ||«      }t	        |«      \  }}||z
  }	||z
  }
t        j
                  ddg|
|	k\  «      t        j                  |t        j                  |	|
«      «      z  } | ||z   |«      }t	        |«      \  }}||z
  }||z
  }t        j
                  ddg||k\  «      t        j                  |t        j                  ||«      «      z  } | |||z   «      }|||z
  |z  ||z
  |z  fS )zÈ
    Compute *func* and its derivatives along x and y at positions *xs*, *ys*,
    while ensuring that finite difference calculations don't try to evaluate
    values outside of *xlims*, *ylims*.
    g      à?éÿÿÿÿr   )ÚnpÚfinfoÚfloatÚepsÚsortedÚtakeÚminimumÚmaximum)ÚfuncÚxsÚysÚxlimsÚylimsr   ÚvalÚxloÚxhiÚdxloÚdxhiÚxepsÚval_dxÚyloÚyhiÚdyloÚdyhiÚyepsÚval_dys                      úm/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/mpl_toolkits/axisartist/grid_helper_curvelinear.pyÚ_value_and_jacobianr*      s  € ô �(‰(”5‹/×
Ñ
 #Ñ
&€CÙ
ˆr�2‹,€Cô �e‹}�H€CˆØ�‰8€DØ�‰8€DÜ�G‰G�R˜�G˜T T™\Ó*Ü�j‰j˜œbŸj™j¨¨tÓ4Ó5ñ6€Dá�"�t‘)˜RÓ €FÜ�e‹}�H€CˆØ�‰8€DØ�‰8€DÜ�G‰G�R˜�G˜T T™\Ó*Ü�j‰j˜œbŸj™j¨¨tÓ4Ó5ñ6€Dá�"�b˜4‘iÓ €FØ�&˜3‘, $Ñ&¨°#©¸Ñ(=Ð>Ð>ó    c                   ó6   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )ÚFixedAxisArtistHelperz(
    Helper class for a fixed axis.
    c                 ól   •— t         ‰| �  |¬«       || _        |€| j                  }|| _        || _        y)ú}
        nth_coord = along which coordinate value varies.
         nth_coord = 0 ->  x axis, nth_coord = 1 -> y axis
        )ÚlocN)ÚsuperÚ__init__Úgrid_helperÚ	nth_coordÚnth_coord_ticksÚside)Úselfr3   r6   r5   Ú	__class__s       €r)   r2   zFixedAxisArtistHelper.__init__1   s;   ø€ ô 	‰Ñ˜TÐÔ"à&ˆÔØÐ"Ø"Ÿn™nˆOØ.ˆÔàˆ�	r+   c                 ó:   — | j                   j                  |«       y ©N)r3   Ú
update_lim©r7   Úaxess     r)   r;   z FixedAxisArtistHelper.update_lim@   s   € Ø×Ñ×#Ñ# DÕ)r+   c                 ó   — |j                   S r:   ©Ú	transDatar<   s     r)   Úget_tick_transformz(FixedAxisArtistHelper.get_tick_transformC   ó   € Ø�~‰~Ðr+   c                 ó  ‡ ‡‡— ‰ j                   dk(  r|j                  «       n|j                  «       \  }}||kD  rdddddœ‰ j                     Šn‰ j                  Št	        dddd¬«      ‰   Šˆˆ ˆfd	„} |«       t        g «      fS )
z tick_loc, tick_angle, tick_labelr   ÚrightÚleftÚbottomÚtop)rE   rD   rG   rF   éZ   ©rE   rD   rF   rG   c               3   óÜ   •K  — ‰j                   dfd‰j                   z
  dffD ]E  \  } }‰j                  j                  ddg|       }|d   ‰   D ]  }g |d   ¢‰‘|r|d   nd	‘­–— Œ ŒG y ­w)
NTr   FÚlonÚlatÚticksr0   ÚlabelÚ )r5   r3   Ú
_grid_info)r4   Úshow_labelsÚgiÚtickÚangle_tangentr7   r6   s       €€€r)   Ú
iter_majorz<FixedAxisArtistHelper.get_tick_iterators.<locals>.iter_majorQ   sª   øè ø€ à×)Ñ)¨4Ð0°1°t×7KÑ7KÑ3KÈUÐ2Sð+Uò CÑ&�	˜;à×%Ñ%×0Ñ0°%¸°À	Ñ1JÑK�Ø˜w™K¨Ñ-ò C�DðC˜D ™Kð C¨ð CÙ-8˜D šM¸bñCó CñCñCùs   ƒA)A,)r4   Úget_ylimÚget_xlimr6   ÚdictÚiter)r7   r=   Úv1Úv2rU   rT   r6   s   `    @@r)   Úget_tick_iteratorsz(FixedAxisArtistHelper.get_tick_iteratorsF   sƒ   ú€ à$(§N¡N°aÒ$7�—‘”¸T¿]¹]»_‰ˆˆBØ�Š7Ø#¨fØ#¨uñ6Ø6:·i±iñA‰Dð —9‘9ˆDä "¨B°q¸aÔ@ÀÑFˆö	Cñ ‹|œT "›XÐ%Ð%r+   r:   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   r;   rA   r\   Ú__classcell__©r8   s   @r)   r-   r-   ,   s   ø„ ñõò*òö&r+   r-   c                   óP   ‡ — e Zd Zd
ˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zˆ xZS )ÚFloatingAxisArtistHelperc                 óœ   •— t         ‰| �  ||«       || _        || _        t        j
                   t        j
                  f| _        d| _        y)r/   éd   N)r1   r2   Úvaluer3   r   ÚinfÚ	_extremesÚ_line_num_points)r7   r3   r4   rg   Úaxis_directionr8   s        €r)   r2   z!FloatingAxisArtistHelper.__init__^   s@   ø€ ô
 	‰Ñ˜ EÔ*ØˆŒ
Ø&ˆÔÜŸ&™&˜¤"§&¡&˜ˆŒØ #ˆÕr+   c                 ó`   — |€t         j                   }|€t         j                  }||f| _        y r:   )r   rh   ri   )r7   Úe1Úe2s      r)   Úset_extremesz%FloatingAxisArtistHelper.set_extremesi   s+   € Øˆ:Ü—&‘&�ˆBØˆ:Ü—‘ˆBØ˜R˜ˆ�r+   c           
      ó˜  — | j                   j                  |«       |j                  «       \  }}|j                  «       \  }}| j                   j                  }|j                  |j                  ||||«      }|\  }}	}
}| j                  \  }}| j                  dk(  rt        ||
«      }
t        ||«      }n'| j                  dk(  rt        ||«      }t        ||	«      }	|j                  ||	«      \  }}}|j                  |
|«      \  }}}| j                  dk(  rat        j                  | j                  | j                   «      }t        j"                  |
|| j                  «      }|j%                  ||«      \  }}no| j                  dk(  r`t        j"                  ||	| j                  «      }t        j                  | j                  | j                   «      }|j%                  ||«      \  }}||	|
|f||t        j&                  |«      f||t        j&                  |«      f|j)                  dd||«      |j)                  dd||«      fdœ| _        y )Nr   r   rF   é   )ÚextremesÚlon_infoÚlat_infoÚ
lon_labelsÚ
lat_labelsÚline_xy)r3   r;   rW   rV   Úgrid_finderÚextreme_finderÚinv_transform_xyri   r4   ÚmaxÚminÚgrid_locator1Úgrid_locator2r   Úfullrj   rg   ÚlinspaceÚtransform_xyÚasarrayÚ_format_ticksrP   )r7   r=   Úx1Úx2Úy1Úy2rx   rr   Úlon_minÚlon_maxÚlat_minÚlat_maxÚe_minÚe_maxÚlon_levsÚlon_nÚ
lon_factorÚlat_levsÚlat_nÚ
lat_factorÚxx0Úyy0ÚxxÚyys                           r)   r;   z#FloatingAxisArtistHelper.update_limp   s!  € Ø×Ñ×#Ñ# DÔ)à—‘“‰ˆˆBØ—‘“‰ˆˆBØ×&Ñ&×2Ñ2ˆØ×-Ñ-¨k×.JÑ.JØ.0°"°b¸"ó>ˆð .6Ñ*ˆ�˜' 7Ø—~‘~‰ˆˆuØ�>‰>˜QÒÜ˜% Ó)ˆGÜ˜% Ó)‰GØ�^‰^˜qÒ Ü˜% Ó)ˆGÜ˜% Ó)ˆGð ×%Ñ% g¨wÓ7ñ 	$ˆ�%˜ð ×%Ñ% g¨wÓ7ñ 	$ˆ�%˜ð �>‰>˜QÒÜ—'‘'˜$×/Ñ/°·±Ó<ˆCÜ—+‘+˜g w°×0EÑ0EÓFˆCØ ×-Ñ-¨c°3Ó7‰FˆB‘Ø�^‰^˜qÒ Ü—+‘+˜g w°×0EÑ0EÓFˆCÜ—'‘'˜$×/Ñ/°·±Ó<ˆCØ ×-Ñ-¨c°3Ó7‰FˆB�ð ! '¨7°GÐ<Ø! 5¬"¯*©*°ZÓ*@ÐAØ! 5¬"¯*©*°ZÓ*@ÐAØ%×3Ñ3Ø�8˜Z¨ó3à%×3Ñ3Ø�8˜Z¨ó3à˜B�xñ	
ˆ�r+   c                 ó   — t        «       S r:   )r   r<   s     r)   Úget_axislabel_transformz0FloatingAxisArtistHelper.get_axislabel_transform›   s
   € Ü‹zÐr+   c           	      ó
  ‡ ‡— ˆˆ fd„}‰ j                   d   \  }}}}‰ j                  dk(  r‰ j                  }||z   dz  }n#‰ j                  dk(  r||z   dz  }‰ j                  }t        |||f||f«      \  }	}
}‰j                  j                  «       j                  |	«      }d|d   cxk  rdk  rRn yd|d   cxk  rdk  rAn y||
g‰ j                     }|	t        j                  t        j                  |d d d…   Ž «      fS y)Nc                 ó    •— ‰j                   j                  j                  «       ‰j                  z   }|j	                  | |g«      j
                  S r:   )r3   rx   Úget_transformr@   Ú	transformÚT©ÚxÚyÚtrfr=   r7   s      €€r)   Útrf_xyz@FloatingAxisArtistHelper.get_axislabel_pos_angle.<locals>.trf_xyŸ   s?   ø€ Ø×"Ñ"×.Ñ.×<Ñ<Ó>ÀÇÁÑOˆCØ—=‘= ! Q Ó(×*Ñ*Ð*r+   rr   r   rq   r   r   )NN)
rP   r4   rg   r*   Ú	transAxesÚinvertedr�   r   Úrad2degÚarctan2)r7   r=   r£   ÚxminÚxmaxÚyminÚymaxr”   r•   Úxy1Údxy1_dxÚdxy1_dyÚpÚds   ``            r)   Úget_axislabel_pos_anglez0FloatingAxisArtistHelper.get_axislabel_pos_anglež   s  ù€ õ	+ð "&§¡°Ñ!<Ñˆˆd�D˜$Ø�>‰>˜QÒØ—*‘*ˆCØ˜$‘; !Ñ#‰CØ�^‰^˜qÒ Ø˜$‘; !Ñ#ˆCØ—*‘*ˆCÜ 3Ø�C˜˜t T˜l¨T°4¨Ló!:ÑˆˆW�gà�N‰N×#Ñ#Ó%×/Ñ/°Ó4ˆØ��!‘Œ>˜Œ>ð ð	   1 Q¡4œn¨1œnð ð ˜'Ð" 4§>¡>Ñ2ˆAØœŸ
™
¤2§:¡:¨q±°2°©wÐ#7Ó8Ð8Ð8àr+   c                 ó   — t        «       S r:   )r   r<   s     r)   rA   z+FloatingAxisArtistHelper.get_tick_transform³   s   € Ü Ó"Ð"r+   c                 ó4  ‡ ‡‡‡‡‡‡‡‡— ‰ j                   d   \  }}}||z  }‰ j                   d   \  }}}||z  }	‰ j                  \  }
}ˆˆ fd„}‰ j                  dk(  re|
|k  ||k  z  }t        |‰ j                  ||   t
        j                   t
        j                  f|
|f«      \  \  ŠŠ\  }}\  }}‰ j                   d   Šns‰ j                  dk(  rd|
|	k  |	|k  z  }t        ||	|   ‰ j                  t
        j                   t
        j                  f|
|f«      \  \  ŠŠ\  }}\  }}‰ j                   d   Št        ‰«      D ��cg c]
  \  }}|sŒ	|‘Œ c}}Št        j                  «      Št        j                  «      Š|dk(  |dk(  z  }‰|   t
        j                  dz  z   ‰|<   ‰ j                  ‰«      ‰j                  z
  Št        j                  t        j                  j                   d	«      Šˆˆˆˆˆˆˆfd
„} |«       t#        g «      fS c c}}w )z9tick_loc, tick_angle, tick_label, (optionally) tick_labelrt   rs   c                 óê   •— ‰j                   j                  j                  «       ‰j                  z   }|j	                  t        j                  t        j                  | |«      «      «      j                  S r:   )	r3   rx   rœ   r@   r�   r   Úcolumn_stackÚbroadcast_arraysrž   rŸ   s      €€r)   r£   z;FloatingAxisArtistHelper.get_tick_iterators.<locals>.trf_xyÁ   sQ   ø€ Ø×"Ñ"×.Ñ.×<Ñ<Ó>ÀÇÁÑOˆCØ—=‘=¤§¡´×1DÑ1DÀQÈÓ1JÓ!KÓL×NÑNÐNr+   r   rv   r   ru   rq   )r   r   c               3   óÚ   •K  — t        ‰‰‰‰‰	«      D ]T  \  } }}}}‰
j                  | |f«      } ‰|d   «      sŒ( ‰|d   «      sŒ4| |ggt        j                  ||g«      ¢|‘­–— ŒV y ­w)Nr   r   )Úzipr�   r   r¦   )r    r¡   ÚnormalÚtangentÚlabÚc2Úangle_normalrT   Úin_01ÚlabelsÚtick_to_axesÚxx1Úyy1s         €€€€€€€r)   rU   z?FloatingAxisArtistHelper.get_tick_iterators.<locals>.iter_majorÝ   s~   øè ø€ ä˜3  \°=À&ÓIòFÑ*��1�f˜g sà!×+Ñ+¨Q°¨FÓ3�Ù˜˜A™•<¡E¨"¨Q©%¥LØ˜a˜&ÐE¤2§:¡:¨v°wÐ.?Ó#@ÐEÀ#ÑEÓEñ	Fùs   ƒ7A+»A+Á$A+)rP   ri   r4   r*   rg   r   rh   r¸   r§   ÚpirA   r¤   Ú	functoolsÚpartialÚmplÚ
transformsÚ_interval_contains_closerY   )r7   r=   r‘   r’   r“   r•   rŽ   r�   r�   r”   Úe0rm   r£   ÚmaskÚdxx1Údyy1Údxx2Údyy2ÚlÚmÚmmrU   r½   rT   r¾   r¿   rÀ   rÁ   rÂ   s   ``                    @@@@@@@r)   r\   z+FloatingAxisArtistHelper.get_tick_iterators¶   s   ÿø€ ð '+§o¡o°jÑ&AÑ#ˆ�%˜Ø˜Ñ#ˆà&*§o¡o°jÑ&AÑ#ˆ�%˜Ø˜Ñ#ˆà—‘‰ˆˆBõ	Oð
 �>‰>˜QÒØ˜#‘I #¨¡)Ñ,ˆDÜ5HØ˜Ÿ
™
 C¨¡I´·±°¼¿¹Ð/@À2ÀrÀ(ó6LÑ2‰JˆS�#™˜˜t¡l t¨Tà—_‘_ \Ñ2‰Fà�^‰^˜qÒ Ø˜#‘I #¨¡)Ñ,ˆDÜ5HØ˜˜D™	 4§:¡:´·±°¼¿¹Ð/@À2ÀrÀ(ó6LÑ2‰JˆS�#™˜˜t¡l t¨Tà—_‘_ \Ñ2ˆFä # F¨DÓ 1×7™˜˜1²Q’!Ó7ˆä—z‘z $¨Ó-ˆÜŸ
™
 4¨Ó.ˆØ�a‰i˜D A™IÑ&ˆØ(¨Ñ,¬r¯u©u°q©yÑ8ˆ�RÑà×.Ñ.¨tÓ4°t·~±~ÑEˆÜ×!Ñ!Ü�N‰N×3Ñ3°Vó=ˆ÷	Fò 	Fñ ‹|œT "›XÐ%Ð%ùó% 8s   Å
HÅHc                 ó   — |j                   S r:   r?   r<   s     r)   Úget_line_transformz+FloatingAxisArtistHelper.get_line_transformæ   rB   r+   c                 óˆ   — | j                  |«       | j                  d   \  }}t        t        j                  ||g«      «      S )Nrw   )r;   rP   r   r   rµ   )r7   r=   r    r¡   s       r)   Úget_linez!FloatingAxisArtistHelper.get_lineé   s8   € Ø�‰˜ÔØ�‰˜yÑ)‰ˆˆ1Ü”B—O‘O Q¨ FÓ+Ó,Ð,r+   r:   )r]   r^   r_   r2   ro   r;   r™   r±   rA   r\   rÓ   rÕ   ra   rb   s   @r)   rd   rd   \   s2   ø„ õ	$ò ò)
òVòò*#ò.&ò`ö-r+   rd   c                   ó°   ‡ — e Zd Z	 	 	 	 	 d
ˆ fd„	Zdd„Z ej                  dd«      	 dd„«       Zdd„Zd„ Z	dd„Z
 ej                  d«      dd	„«       Zˆ xZS )ÚGridHelperCurveLinearc                 óZ   •— t         ‰| �  «        d| _        t        ||||||«      | _        y)a×  
        Parameters
        ----------
        aux_trans : `.Transform` or tuple[Callable, Callable]
            The transform from curved coordinates to rectilinear coordinate:
            either a `.Transform` instance (which provides also its inverse),
            or a pair of callables ``(trans, inv_trans)`` that define the
            transform and its inverse.  The callables should have signature::

                x_rect, y_rect = trans(x_curved, y_curved)
                x_curved, y_curved = inv_trans(x_rect, y_rect)

        extreme_finder

        grid_locator1, grid_locator2
            Grid locators for each axis.

        tick_formatter1, tick_formatter2
            Tick formatters for each axis.
        N)r1   r2   rP   r   rx   )r7   Ú	aux_transry   r}   r~   Útick_formatter1Útick_formatter2r8   s          €r)   r2   zGridHelperCurveLinear.__init__ð   s5   ø€ ô4 	‰ÑÔØˆŒÜ% iØ&4Ø&3Ø&3Ø&5Ø&5ó7ˆÕr+   c                 ó„   — |�| j                   j                  |«        | j                   j                  di |¤Ž d | _        y )N© )rx   Úupdate_transformÚupdateÚ_old_limits)r7   rÙ   Úkwargss      r)   Úupdate_grid_finderz(GridHelperCurveLinear.update_grid_finder  s=   € ØÐ Ø×Ñ×-Ñ-¨iÔ8Øˆ×Ñ×ÑÑ) &Ò)ØˆÕr+   z3.9r4   c                 ób   — |€| j                   }|€|}t        | ||¬«      }t        |||¬«      }|S )N)r5   )rk   )r=   r-   r   )r7   r0   r4   rk   Úoffsetr=   ÚhelperÚaxislines           r)   Únew_fixed_axisz$GridHelperCurveLinear.new_fixed_axis  s@   € ð ˆ<Ø—9‘9ˆDØÐ!Ø ˆNÜ& t¨SÀ)ÔLˆÜ˜d F¸>ÔJˆð ˆr+   c                 óê   — |€| j                   }t        | |||«      }t        ||«      }|j                  j	                  d«       |j                  j                  |j                   j                  «       |S )NT)r=   rd   r   ÚlineÚset_clip_onÚset_clip_boxÚbbox)r7   r4   rg   r=   rk   rå   ræ   s          r)   Únew_floating_axisz'GridHelperCurveLinear.new_floating_axis&  sd   € Øˆ<Ø—9‘9ˆDÜ)Ø�)˜U Nó4ˆä˜d FÓ+ˆØ�‰×!Ñ! $Ô'Ø�‰×"Ñ" 8§=¡=×#5Ñ#5Ô6ð ˆr+   c                 óJ   — | j                   j                  ||||«      | _        y r:   )rx   Úget_grid_inforP   )r7   r„   r†   r…   r‡   s        r)   Ú_update_gridz"GridHelperCurveLinear._update_grid2  s    € Ø×*Ñ*×8Ñ8¸¸RÀÀRÓHˆ�r+   c                 óº   — g }|dv r(| j                   d   d   D ]  }|j                  |«       Œ |dv r(| j                   d   d   D ]  }|j                  |«       Œ |S )N)Úbothr    rK   Úlines)rò   r¡   rL   )rP   Úextend)r7   ÚwhichÚaxisÚ
grid_linesÚgls        r)   Úget_gridlinesz#GridHelperCurveLinear.get_gridlines5  ss   € Øˆ
Ø�=Ñ Ø—o‘o eÑ,¨WÑ5ò &�Ø×!Ñ! "Õ%ð&à�=Ñ Ø—o‘o eÑ,¨WÑ5ò &�Ø×!Ñ! "Õ%ð&àÐr+   c              #   óê   K  — t        dddd¬«      |   }ddg|   }|s,| j                  |   d   |   D ]  }g |d   ¢|‘|d   ‘­–— Œ y | j                  |   d   |   D ]  }g |d   ¢|‘d	‘­–— Œ y ­w)
NrH   r   rI   rK   rL   rM   r0   rN   rO   )rX   rP   )r7   r4   Ú	axis_sideÚminorrT   Ú
lon_or_latrS   s          r)   Úget_tick_iteratorz'GridHelperCurveLinear.get_tick_iterator?  sª   è ø€ ä "¨B°q¸aÔ@ÀÑKˆØ˜U�^ IÑ.ˆ
ÙØŸ™¨
Ñ3°GÑ<¸YÑGò A�Ø@�t˜E‘{Ð@ MÐ@°4¸±=Ñ@Ó@ñAð Ÿ™¨
Ñ3°GÑ<¸YÑGò 6�Ø5�t˜E‘{Ð5 MÐ5°2Ñ5Ó5ñ6ùs   ‚A1A3)NNNNNr:   )NNNN)NrF   )Úmajorrò   )F)r]   r^   r_   r2   râ   r   Úmake_keyword_onlyrç   rí   rð   rù   Ú
deprecatedrþ   ra   rb   s   @r)   r×   r×   ï   sr   ø„ à $Ø#Ø#Ø!%Ø!%õ!7óF ð €T×Ñ˜E ;Ó/àNRò
ó 0ð
ó
òIóð €T‡_�_�UÓò6ó ô6r+   r×   )r`   rÄ   Únumpyr   Ú
matplotlibrÆ   r   Úmatplotlib.pathr   Úmatplotlib.transformsr   r   Ú	axislinesr   r	   r
   Úaxis_artistr   rx   r   r*   r-   rd   r×   rÝ   r+   r)   ú<module>r     sa   ðñó ã ã Ý Ý  ß =÷Oñ Oå #Ý #ò?ô2-&Ð6ô -&ô`P-Ð<ô P-ôfY6˜Nõ Y6r+   