§
    ‡Ûg *  ã                   ó~  — d Z ddlZddlZddlZddlmZmZ ddlm	Z
 ddlmZ ddlmZ ddlmZmZ ddlmZ dd	lmZ  G d
„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ de¦  «        Z G d„ dej        ¦  «        Z G d„ d¦  «        Z ej        ed¦  «        Z e eej        ¦  «        ¦  «        ZeZdS )z/
An experimental support for curvilinear grid.
é    N)Ú_apiÚcbook)ÚPath)Úhost_axes_class_factoryé   )Ú	axislinesÚgrid_helper_curvelinear)Ú
AxisArtist)ÚExtremeFinderSimplec                   ó   — e Zd ZdS )ÚFloatingAxisArtistHelperN)Ú__name__Ú
__module__Ú__qualname__© ó    ú[/granary/edev/quantum/lib/python3.11/site-packages/mpl_toolkits/axisartist/floating_axes.pyr   r      s   € € € € € à€Dr   r   c                   ó2   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )ÚFixedAxisArtistHelperNc                 óÂ   •— |                      |¦  «        \  }}t          ¦   «                              ||||¬¦  «         |€|}|| _        || _        || _        || _        dS )z}
        nth_coord = along which coordinate value varies.
         nth_coord = 0 ->  x axis, nth_coord = 1 -> y axis
        ©Úaxis_directionN)Úget_data_boundaryÚsuperÚ__init__Únth_coord_ticksÚvalueÚgrid_helperÚ_side)Úselfr   Úsider   r   Ú	nth_coordÚ	__class__s         €r   r   zFixedAxisArtistHelper.__init__   sk   ø€ ð
 '×8Ò8¸Ñ>Ô>ÑˆˆyÝ‰Œ×Ò˜ i°ÀtÐÑLÔLÐLØÐ"Ø'ˆOØ.ˆÔàˆŒ
Ø&ˆÔØˆŒ
ˆ
ˆ
r   c                 ó\   — | j                              |¦  «         | j         j        | _        d S ©N)r   Ú
update_limÚ
_grid_info)r    Úaxess     r   r&   z FixedAxisArtistHelper.update_lim.   s*   € ØÔ×#Ò# DÑ)Ô)Ð)ØÔ*Ô5ˆŒˆˆr   c                 ó  ‡‡‡‡‡‡‡‡‡— | j         j        Š| j        d         \  }}}||z  }| j        d         \  }}}||z  }	| j         j        }
t	          |
dd…         ¦  «        \  }}t	          |
dd…         ¦  «        \  }}ˆˆfd„}| j        dk    rO||k    ||k    z  }t          j        || j        ||         ||f||f¦  «        \  \  ŠŠ\  }}\  }}| j        d         ŠnY| j        dk    rN||	k    |	|k    z  }t          j        ||	|         | j        ||f||f¦  «        \  \  ŠŠ\  }}\  }}| j        d	         Šd
„ t          ‰|¦  «        D ¦   «         Št          j        ||¦  «        Št          j        ||¦  «        Š|dk    |dk    z  }‰|         t          j        dz  z   ‰|<   |                      ‰¦  «        ‰j        z
  Št          j        t"          j        j        d¦  «        Šˆˆˆˆˆˆˆfd„} |¦   «         t)          g ¦  «        fS )z9tick_loc, tick_angle, tick_label, (optionally) tick_labelÚlat_infoÚlon_infoNé   c                 óº   •— ‰                      ¦   «         ‰j        z   }|                     t          j        t          j        | |¦  «        ¦  «        ¦  «        j        S r%   )Úget_transformÚ	transDataÚ	transformÚnpÚcolumn_stackÚbroadcast_arraysÚT)ÚxÚyÚtrfr(   Úgrid_finders      €€r   Útrf_xyz8FixedAxisArtistHelper.get_tick_iterators.<locals>.trf_xyA   sG   ø€ Ø×+Ò+Ñ-Ô-°´Ñ>ˆCØ—=’=¥¤µÔ1DÀQÈÑ1JÔ1JÑ!KÔ!KÑLÔLÔNÐNr   r   Ú
lat_labelsr   Ú
lon_labelsc                 ó   — g | ]	\  }}|¯|‘Œ
S r   r   )Ú.0ÚlÚms      r   ú
<listcomp>z<FixedAxisArtistHelper.get_tick_iterators.<locals>.<listcomp>S   s!   € Ð7Ð7Ð7™˜˜1°QÐ7�!Ð7Ð7Ð7r   )r   r   c               3   óö   •K  — t          ‰‰‰‰‰	¦  «        D ]a\  } }}}}‰
                     | |f¦  «        } ‰|d         ¦  «        r1 ‰|d         ¦  «        r | |ggt          j        ||g¦  «        ¢|‘R V — Œbd S )Nr   r   )Úzipr0   r1   Úrad2deg)r5   r6   ÚnormalÚtangentÚlabÚc2Úangle_normalÚangle_tangentÚin_01ÚlabelsÚtick_to_axesÚxx1Úyy1s         €€€€€€€r   Úf1z4FixedAxisArtistHelper.get_tick_iterators.<locals>.f1^   s¯   øè è € å˜3  \°=À&ÑIÔIðFð FÑ*��1�f˜g sà!×+Ò+¨Q°¨FÑ3Ô3�Ø�5˜˜Aœ‘<”<ð F E E¨"¨Q¬%¡L¤Lð FØ˜a˜&ÐE¥2¤:¨v°wÐ.?Ñ#@Ô#@ÐEÀ#ÐEÐEÐEÐEÐEøð	Fð Fr   )r   r8   r'   Ú	_extremesÚsortedr"   r	   Ú_value_and_jacobianr   rB   r1   Úarctan2ÚpiÚget_tick_transformÚ	transAxesÚ	functoolsÚpartialÚmplÚ
transformsÚ_interval_contains_closeÚiter)r    r(   Úlat_levsÚlat_nÚ
lat_factorÚyy0Úlon_levsÚlon_nÚ
lon_factorÚxx0ÚextremesÚxminÚxmaxÚyminÚymaxr9   ÚmaskÚdxx1Údyy1Údxx2Údyy2ÚmmrO   rH   rI   r8   rJ   rK   rL   rM   rN   s    `                     @@@@@@@@r   Úget_tick_iteratorsz(FixedAxisArtistHelper.get_tick_iterators2   s�  øøøøøøøøø€ ð Ô&Ô2ˆà&*¤o°jÔ&AÑ#ˆ�%˜Ø˜Ñ#ˆà&*¤o°jÔ&AÑ#ˆ�%˜Ø˜Ñ#ˆàÔ#Ô-ˆÝ˜H R a RœLÑ)Ô)‰
ˆˆdÝ˜H Q R RœLÑ)Ô)‰
ˆˆdð	Oð 	Oð 	Oð 	Oð 	Oð 	Oð Œ>˜QÒÐØ˜C’K C¨4¢KÑ0ˆDå'Ô;Ø˜DœJ¨¨D¬	°D¸$°<À$ÈÀñOô Oñ 3‰JˆS�#™˜˜t¡l t¨Tð ”_ \Ô2ˆFˆFàŒ^˜qÒ Ð Ø˜C’K C¨4¢KÑ0ˆDå'Ô;Ø˜C œI t¤z°D¸$°<À$ÈÀñOô Oñ 3‰JˆS�#™˜˜t¡l t¨Tð ”_ \Ô2ˆFà7Ð7¥ F¨DÑ 1Ô 1Ð7Ñ7Ô7ˆå”z $¨Ñ-Ô-ˆÝœ
 4¨Ñ.Ô.ˆØ�aŠi˜D AšIÑ&ˆØ(¨Ô,­r¬u°q©yÑ8ˆ�RÑà×.Ò.¨tÑ4Ô4°t´~ÑEˆÝÔ!ÝŒNÔ3°Vñ=ô =ˆð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð ˆr‰tŒt•T˜"‘X”Xˆ~Ðr   c                 óà   — |                       |¦  «         t          dddd¬¦  «        | j                 \  }}| j        |         |         \  }}t	          t          j        ||g¦  «        ¦  «        S )N)Ú
lon_lines0r   )rr   r   )Ú
lat_lines0r   )rs   r   ©ÚleftÚrightÚbottomÚtop)r&   Údictr   r'   r   r1   r2   )r    r(   ÚkÚvÚxxÚyys         r   Úget_linezFixedAxisArtistHelper.get_lineg   sw   € Ø�Š˜ÑÔÐÝÐ*Ø+Ø,Ø)ð+ñ +ô +ð ,0¬:ô7‰ˆˆ1ð ” Ô# AÔ&‰ˆˆBÝ•B”O R¨ HÑ-Ô-Ñ.Ô.Ð.r   r%   )r   r   r   r   r&   rp   r~   Ú__classcell__©r#   s   @r   r   r      sk   ø€ € € € € ðð ð ð ð ð ð6ð 6ð 6ð3ð 3ð 3ðj/ð /ð /ð /ð /ð /ð /r   r   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚExtremeFinderFixedc                 ó   — || _         dS )zÚ
        This subclass always returns the same bounding box.

        Parameters
        ----------
        extremes : (float, float, float, float)
            The bounding box that this helper always returns.
        N©rP   )r    re   s     r   r   zExtremeFinderFixed.__init__t   s   € ð "ˆŒˆˆr   c                 ó   — | j         S r%   r„   )r    Útransform_xyÚx1Úy1Úx2Úy2s         r   Ú__call__zExtremeFinderFixed.__call__   s
   € àŒ~Ðr   N)r   r   r   r   r‹   r   r   r   r‚   r‚   q   s2   € € € € € ð	"ð 	"ð 	"ðð ð ð ð r   r‚   c                   óL   ‡ — e Zd Z	 	 	 	 d	ˆ fd„	Zd„ Z	 	 	 	 d	d„Zd„ Zd
d„Zˆ xZS )ÚGridHelperCurveLinearNc                 ó‚   •— || _         t          |¦  «        }t          ¦   «                              ||||||¬¦  «         d S )N)Úgrid_locator1Úgrid_locator2Útick_formatter1Útick_formatter2)rP   r‚   r   r   )	r    Ú	aux_transre   r�   r�   r‘   r’   Úextreme_finderr#   s	           €r   r   zGridHelperCurveLinear.__init__†   sU   ø€ ð "ˆŒÝ+¨HÑ5Ô5ˆÝ‰Œ×Ò˜Ø'Ø'4Ø'4Ø)8Ø)8ð 	ñ 	:ô 	:ð 	:ð 	:ð 	:r   c                 ó\   — | j         \  }}}}t          |df|df|df|df¬¦  «        |         S )z$
        Return v=0, nth=1.
        r   r   rt   )rP   ry   )r    r!   Úlon1Úlon2Úlat1Úlat2s         r   r   z'GridHelperCurveLinear.get_data_boundary•   sP   € ð "&¤Ñˆˆd�D˜$Ý˜$ ˜Ø ˜)Ø  !˜9Ø˜q˜	ð#ñ #ô #ð $(ô)ð 	)r   c                 óä   — |€| j         }|€|}t          | ||¬¦  «        }t          |||¬¦  «        }|j                             d¦  «         |j                             |j         j        ¦  «         |S )N)r   r   T)r(   r   r
   ÚlineÚset_clip_onÚset_clip_boxÚbbox)r    Úlocr"   r   Úoffsetr(   Ú_helperÚaxislines           r   Únew_fixed_axisz$GridHelperCurveLinear.new_fixed_axisŸ   s‚   € ð
 ˆ<Ø”9ˆDØÐ!Ø ˆNõ (Ø�# yð2ñ 2ô 2ˆå˜d G¸NÐKÑKÔKˆàŒ×!Ò! $Ñ'Ô'Ð'ØŒ×"Ò" 8¤=Ô#5Ñ6Ô6Ð6Øˆr   c                 ój  — | j         €t          ¦   «         | _         | j         }| j        }|                     |j        ||||¦  «        }t          |d d…         ¦  «        \  }}	t          |dd …         ¦  «        \  }
}||	|
|f|d<   |                     ||	¦  «        \  }}}t          j        |¦  «        }| 	                    |
|¦  «        \  }}}t          j        |¦  «        }|||f|d<   |||f|d<   | 
                    d||¦  «        |d<   |                     d||¦  «        |d<   |d |…         |z  }|d |…         |z  }|                     |||k     ||	k     z           ||
|k     ||k     z           ||	|
|¦  «        \  }}||d<   ||d	<    |j        |d d…         |dd …         g|¢R Ž \  }}||d
<   ||d<   d S )Nr,   re   r+   r*   rw   r;   r:   Ú	lon_linesÚ	lat_linesrr   rs   )r'   ry   r8   r”   Úinv_transform_xyrQ   r�   r1   Úasarrayr�   r‘   r’   Ú_get_raw_grid_lines)r    r‡   rˆ   r‰   rŠ   Ú	grid_infor8   re   Úlon_minÚlon_maxÚlat_minÚlat_maxra   rb   rc   r]   r^   r_   Ú
lon_valuesÚ
lat_valuesr¥   r¦   s                         r   Ú_update_gridz"GridHelperCurveLinear._update_gridÇ   s6  € ØŒ?Ð"Ý"™fœfˆDŒOà”Oˆ	àÔ&ˆØ×-Ò-¨kÔ.JØ.0°"°b¸"ñ>ô >ˆõ " (¨2¨A¨2¤,Ñ/Ô/Ñˆ�Ý! (¨1¨2¨2¤,Ñ/Ô/Ñˆ�Ø '¨°'¸7Ð Bˆ	�*Ñð ×%Ò% g¨wÑ7Ô7ñ 	$ˆ�%˜å”:˜hÑ'Ô'ˆà×%Ò% g¨wÑ7Ô7ñ 	$ˆ�%˜å”:˜hÑ'Ô'ˆà (¨%°Ð ;ˆ	�*ÑØ (¨%°Ð ;ˆ	�*Ñà"-×"=Ò"=Ø�j (ñ#,ô #,ˆ	�,Ñà"-×"=Ò"=Ø�j (ñ#,ô #,ˆ	�,Ñð ˜f˜u˜fÔ%¨
Ñ2ˆ
Ø˜f˜u˜fÔ%¨
Ñ2ˆ
à*×>Ò>Ø˜ *Ò,°¸gÒ1EÑFÔGØ˜ *Ò,°¸gÒ1EÑFÔGØ�W˜g wñ 0ô  0Ñˆ	�9ð
 "+ˆ	�+ÑØ!*ˆ	�+Ñà>˜{Ô>à�R�a�RŒL˜( 1 2 2œ,ð 3à)1ð 3ð  3ð  3Ñˆ	�9ð #,ˆ	�,ÑØ"+ˆ	�,ÑÐÐr   ÚmajorÚbothc                 óš   — g }|dv r |                      | j        d         ¦  «         |dv r |                      | j        d         ¦  «         |S )N)r³   r5   r¥   )r³   r6   r¦   )Úextendr'   )r    ÚwhichÚaxisÚ
grid_liness       r   Úget_gridlinesz#GridHelperCurveLinear.get_gridlinesö   sY   € Øˆ
Ø�=Ð Ð Ø×Ò˜dœo¨kÔ:Ñ;Ô;Ð;Ø�=Ð Ð Ø×Ò˜dœo¨kÔ:Ñ;Ô;Ð;ØÐr   )NNNN)r²   r³   )	r   r   r   r   r   r£   r±   r¹   r   r€   s   @r   r�   r�   „   s¡   ø€ € € € € ð  $Ø#Ø!%Ø!%ð	:ð :ð :ð :ð :ð :ð)ð )ð )ð "&Ø&*Ø"Ø ð	ð ð ð ðP-,ð -,ð -,ð^ð ð ð ð ð ð ð r   r�   c                   ó4   ‡ — e Zd Zˆ fd„Zd„ Zˆ fd„Zd„ Zˆ xZS )ÚFloatingAxesBasec                óÆ   •— t          j        t          |¬¦  «          t          ¦   «         j        |d|i|¤Ž |                      d¦  «         |                      ¦   «          d S )N)r   r   g      ð?)r   Úcheck_isinstancer�   r   r   Ú
set_aspectÚadjust_axes_lim)r    r   ÚargsÚkwargsr#   s       €r   r   zFloatingAxesBase.__init__  se   ø€ ÝÔÕ3ÀÐMÑMÔMÐMØ�‰ŒÔ˜$ÐB¨KÐB¸6ÐBÐBÐBØ�Š˜ÑÔÐØ×ÒÑÔÐÐÐr   c                 óì   — t          |                      ¦   «         j        g d¢¦  «        \  \  }}\  }}\  }}\  }}t          j        ||f||f||f||fg¦  «        }d|                     ¦   «         _        |S )Nrt   éd   )ÚmapÚget_grid_helperr   ÚmpatchesÚPolygonÚget_pathÚ_interpolation_steps)r    Úx0Ú_r‡   Úy0rˆ   Úpatchs          r   Ú_gen_axes_patchz FloatingAxesBase._gen_axes_patch  s‰   € õ .1Ø× Ò Ñ"Ô"Ô4Ø.Ð.Ð.ñ.0ô .0Ñ*‰ˆˆQ‘�"�a™'˜2˜q¡7 B¨õ Ô  2 r (¨R°¨H°r¸2°hÀÀRÀÐ!IÑJÔJˆØ03ˆ�ŠÑÔÔ-Øˆr   c                 óî  •— t          ¦   «                              ¦   «          | j                             |                      ¦   «         j                             ¦   «         | j        z   ¦  «         t          ¦   «                              ¦   «         }| 	                    | j
        ¦  «         |                     | j        ¦  «         | j                             |¦  «         | j                             |¦  «         d S r%   )r   ÚclearrÍ   Úset_transformrÅ   r8   r.   r/   rÎ   Ú
set_figureÚfigurerV   Úset_clip_pathÚ	gridlines)r    Ú
orig_patchr#   s     €r   rÐ   zFloatingAxesBase.clear  sË   ø€ Ý‰Œ�Š‰ŒˆØŒ
× Ò Ø× Ò Ñ"Ô"Ô.×<Ò<Ñ>Ô>ØŒnññ	ô 	ð 	õ
 ‘W”W×,Ò,Ñ.Ô.ˆ
Ø×Ò˜dœkÑ*Ô*Ð*Ø× Ò  ¤Ñ0Ô0Ð0ØŒ
× Ò  Ñ,Ô,Ð,ØŒ×$Ò$ ZÑ0Ô0Ð0Ð0Ð0r   c                 óH  — | j                              ¦   «                              | j                              ¦   «         | j        z
  ¦  «        }|                     dd¦  «        }|                      |j        |j        ¦  «         |  	                    |j
        |j        ¦  «         d S )NgR¸…ëQð?)rÍ   rÈ   Úget_extentsr.   r/   ÚexpandedÚset_xlimrf   rg   Úset_ylimrh   ri   )r    rž   s     r   r¿   z FloatingAxesBase.adjust_axes_lim  sˆ   € ØŒz×"Ò"Ñ$Ô$×0Ò0àŒJ×$Ò$Ñ&Ô&¨¬Ñ7ñ9ô 9ˆð �}Š}˜T 4Ñ(Ô(ˆØ�Š�d”i ¤Ñ+Ô+Ð+Ø�Š�d”i ¤Ñ+Ô+Ð+Ð+Ð+r   )r   r   r   r   rÎ   rÐ   r¿   r   r€   s   @r   r»   r»   ÿ   so   ø€ € € € € ðð ð ð ð ðð ð ð1ð 1ð 1ð 1ð 1ð,ð ,ð ,ð ,ð ,ð ,ð ,r   r»   z
Floating{}) Ú__doc__rW   Únumpyr1   Ú
matplotlibrY   r   r   Úmatplotlib.patchesÚpatchesrÆ   Úmatplotlib.pathr   Ú%mpl_toolkits.axes_grid1.parasite_axesr   Ú r   r	   Úaxis_artistr
   r8   r   r   r   r‚   r�   r»   Ú_make_class_factoryÚfloatingaxes_class_factoryÚAxesÚFloatingAxesÚFloatingSubplotr   r   r   ú<module>rê      sö  ððð ð Ð Ð Ð à Ð Ð Ð à Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø %Ð %Ð %Ð %Ð %Ð %Ø  Ð  Ð  Ð  Ð  Ð  à IÐ IÐ IÐ IÐ IÐ Ià 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø #Ð #Ð #Ð #Ð #Ð #Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð	ð 	ð 	ð 	ð 	ØÔ8ñ	ô 	ð 	ð
Q/ð Q/ð Q/ð Q/ð Q/Ð3ÔLñ Q/ô Q/ð Q/ðhð ð ð ð Ð,ñ ô ð ð&xð xð xð xð xÐ3ÔIñ xô xð xðv%,ð %,ð %,ð %,ð %,ñ %,ô %,ð %,ðP 7˜UÔ6Ø�lñ$ô $Ð à)Ð)ØÐ˜IœNÑ+Ô+ñ-ô -€à€€€r   