Ë
    u™ãj…2  ã                   ó¶   — d dl Zd dlZd dlZd dlmZ d dlm	Z	  ej                  d ej                  g¬«      d„ «       Zej                  d„ «       Z G d„ d«      Zy)é    N)ÚSparseArray)Úparamsc                 ó   — | j                   S )N)Úparam)Úrequests    úk/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/tests/groupby/test_sparse.pyÚ
fill_valuer	   	   s   € à�=‰=Ðó    c                 óL  — t        j                  g d¢g d¢g d¢dœ«      }|j                  «       }|d   j                  t        j                  t
        j                  | «      «      |d<   |d   j                  t        j                  t
        j                  | «      «      |d<   ||fS )z>DataFrame with sparse int columns and a dense grouping column.©Úar   Úbr   r   r   ©é   r   r   é   r   é   )r   é   r   r   é   r   )ÚkeyÚval1Úval2r   r   )ÚpdÚ	DataFrameÚcopyÚastypeÚSparseDtypeÚnpÚint64)r	   ÚdenseÚsparses      r   Ú	sparse_dfr!      s…   € ô �L‰Lâ1Ú&Ú&ñ	
ó€Eð �Z‰Z‹\€FØ˜F‘^×*Ñ*¬2¯>©>¼"¿(¹(ÀJÓ+OÓP€Fˆ6�NØ˜F‘^×*Ñ*¬2¯>©>¼"¿(¹(ÀJÓ+OÓP€Fˆ6�NØ�&ˆ=Ðr
   c                   ó²  — e Zd ZdZej
                  j                  dg d¢«      d„ «       Zej
                  j                  dddg«      d„ «       Zej
                  j                  ddd	g«      d
„ «       Z	ej
                  j                  dg d¢«      d„ «       Z
ej
                  j                  dg d¢«      d„ «       Zd„ Zd„ Zd„ Zd„ Zej
                  j                  dg d¢«      d„ «       Zej
                  j                  dg d¢«      d„ «       Zej
                  j                  dg d¢«      ej
                  j                  dg d¢«      d„ «       «       Zej
                  j                  dg d¢«      d„ «       Zej
                  j                  dddg«      ej
                  j                  dg d¢«      d„ «       «       Zej
                  j                  dddg«      ej
                  j                  dg d¢«      d„ «       «       Zej
                  j                  d d!ej.                  g«      ej
                  j                  dg d"¢«      ej
                  j                  dg d#¢«      d$„ «       «       «       Zej
                  j                  dg d%¢«      d&„ «       Zej
                  j                  dg d'¢«      d(„ «       Zej
                  j                  d d!ej.                  g«      ej
                  j                  dd)d*g«      d+„ «       «       Zej
                  j                  d d!ej.                  g«      ej
                  j                  d,g d-¢«      d.„ «       «       Zy!)/ÚTestSparseGroupbyz?Tests for groupby operations on SparseArray columns (GH#36123).Úop)ÚsumÚmeanÚminÚmaxÚstdÚvarc                 óº   — |\  }} t        |j                  d«      |«      «       } t        |j                  d«      |«      «       }t        j                  ||«       y ©Nr   ©ÚgetattrÚgroupbyÚtmÚassert_frame_equal©Úselfr!   r$   r   r    ÚresultÚexpecteds          r   Útest_sparse_groupby_aggz)TestSparseGroupby.test_sparse_groupby_agg!   óO   € à!‰ˆˆvØ3”˜Ÿ™¨Ó.°Ó3Ó5ˆØ4”7˜5Ÿ=™=¨Ó/°Ó4Ó6ˆÜ
×Ñ˜f hÕ/r
   ÚfirstÚlastc                 ó¾   — |\  }} t        |j                  d«      |«      «       } t        |j                  d«      |«      «       }t        j                  ||d¬«       y )Nr   F)Úcheck_dtyper-   r2   s          r   Útest_sparse_groupby_first_lastz0TestSparseGroupby.test_sparse_groupby_first_last(   sS   € ð "‰ˆˆvØ3”˜Ÿ™¨Ó.°Ó3Ó5ˆØ4”7˜5Ÿ=™=¨Ó/°Ó4Ó6ˆÜ
×Ñ˜f h¸EÖBr
   ÚanyÚallc                 óº   — |\  }} t        |j                  d«      |«      «       } t        |j                  d«      |«      «       }t        j                  ||«       y r,   r-   r2   s          r   Útest_sparse_groupby_any_allz-TestSparseGroupby.test_sparse_groupby_any_all0   r7   r
   )ÚsemÚprodÚmedianc                 óº   — |\  }} t        |j                  d«      |«      «       } t        |j                  d«      |«      «       }t        j                  ||«       y r,   r-   r2   s          r   Útest_sparse_groupby_other_aggsz0TestSparseGroupby.test_sparse_groupby_other_aggs7   r7   r
   )ÚcumsumÚcumminÚcummaxÚcumprodc                 óº   — |\  }} t        |j                  d«      |«      «       } t        |j                  d«      |«      «       }t        j                  ||«       y r,   r-   r2   s          r   Útest_sparse_groupby_transformz/TestSparseGroupby.test_sparse_groupby_transform>   r7   r
   c                 ó¶   — |\  }}|j                  d«      j                  «       }|j                  d«      j                  «       }t        j                  ||«       y r,   )r/   Úrankr0   r1   )r3   r!   r   r    r4   r5   s         r   Útest_sparse_groupby_rankz*TestSparseGroupby.test_sparse_groupby_rankE   sI   € Ø!‰ˆˆvØ—‘ Ó&×+Ñ+Ó-ˆØ—=‘= Ó'×,Ñ,Ó.ˆÜ
×Ñ˜f hÕ/r
   c                 óÈ   — |\  }}dD ]X  } t        |j                  d«      |«      «       } t        |j                  d«      |«      «       }t        j                  ||«       ŒZ y )N)ÚidxminÚidxmaxr   r-   )r3   r!   r   r    r$   r4   r5   s          r   Ú!test_sparse_groupby_idxmin_idxmaxz3TestSparseGroupby.test_sparse_groupby_idxmin_idxmaxK   s^   € Ø!‰ˆˆvØ&ò 	4ˆBØ7”W˜VŸ^™^¨EÓ2°BÓ7Ó9ˆFØ8”w˜uŸ}™}¨UÓ3°RÓ8Ó:ˆHÜ×!Ñ! &¨(Õ3ñ	4r
   c                 óÆ  — t        j                  g d¢dt        j                  t        j                  dgdœ«      }|j	                  «       }t        j
                  |d   t        j                  t        t        j                  «      ¬«      |d<   |j                  d«      j                  «       }|j                  d«      j                  «       }t        j                  ||«       y )N©r   r   r   r   ç      ð?g      @)r   ÚvalrV   ©Údtyper   )r   r   r   Únanr   Úarrayr   Úfloatr/   r&   r0   r1   )r3   r   r    r4   r5   s        r   Ú"test_sparse_groupby_nan_fill_valuez4TestSparseGroupby.test_sparse_groupby_nan_fill_valueR   s    € ô —‘â+ØœRŸV™V¤R§V¡V¨SÐ1ñó
ˆð —‘“ˆÜŸ™  u¡´R·^±^ÄEÌ2Ï6É6Ó5RÔSˆˆu‰Ø—‘ Ó&×+Ñ+Ó-ˆØ—=‘= Ó'×,Ñ,Ó.ˆÜ
×Ñ˜f hÕ/r
   c                 óP  — g d¢}g d¢}t        j                  |d¬«      }|j                  t        j                  t        j
                  |«      «      }|j                  |«      j                  «       }|j                  |«      j                  «       }t        j                  ||«       y )Nr   r   rV   )Úname)
r   ÚSeriesr   r   r   r   r/   r&   r0   Úassert_series_equal)r3   r	   ÚvalsÚkeysÚ	dense_serÚ
sparse_serr4   r5   s           r   Útest_sparse_groupby_seriesz,TestSparseGroupby.test_sparse_groupby_seriesa   s}   € â!ˆÚ-ˆÜ—I‘I˜d¨Ô/ˆ	Ø×%Ñ%¤b§n¡n´R·X±X¸zÓ&JÓKˆ
Ø×#Ñ# DÓ)×.Ñ.Ó0ˆØ×$Ñ$ TÓ*×/Ñ/Ó1ˆÜ
×Ñ˜v xÕ0r
   )r'   r(   r%   r&   rF   r=   c           	      óL  — g d¢}t        j                  t        dt        j                  dt        j                  gt        j
                  t        j                  t        j                  «      ¬«      «      }|j                  j                  j                  dk(  sJ ‚t        j                  dt        j                  dt        j                  g«      } t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }t        j                  ||«       y )NrT   r   rW   r   rU   )r   r_   r   r   rY   r   r   rZ   Úsp_indexÚngapsr.   r/   r0   r`   )r3   r$   rb   rd   rc   r4   r5   s          r   Ú'test_sparse_groupby_nan_fill_value_gapsz9TestSparseGroupby.test_sparse_groupby_nan_fill_value_gapsk   sÎ   € ò $ˆÜ—Y‘YÜ˜œBŸF™F A¤r§v¡vÐ.´b·n±nÄRÇXÁXÌrÏvÉvÓ6VÔWó
ˆ
ð ×Ñ×(Ñ(×.Ñ.°!Ò3Ð3Ð3ä—I‘I˜s¤B§F¡F¨C´·±Ð8Ó9ˆ	Ø6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆÜ
×Ñ˜v xÕ0r
   )r%   r=   r>   c                 ó<  — g d¢}t        j                  t        t        j                  «      }t        j
                  t        dt        j                  dt        j                  g|¬«      «      }|j                  j                  j                  dk(  sJ ‚t        j
                  dt        j                  dt        j                  g«      } t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }t        j                  ||«       y )NrT   TrW   r   )r   r   Úboolr   rY   r_   r   rZ   rg   rh   r.   r/   r0   r`   )r3   r$   rb   rX   rd   rc   r4   r5   s           r   Ú'test_sparse_groupby_bool_nan_fill_valuez9TestSparseGroupby.test_sparse_groupby_bool_nan_fill_valuez   sÊ   € ò $ˆÜ—‘œt¤R§V¡VÓ,ˆÜ—Y‘Yœ{¨D´"·&±&¸$ÄÇÁÐ+GÈuÔUÓVˆ
Ø×Ñ×(Ñ(×.Ñ.°!Ò3Ð3Ð3ä—I‘I˜t¤R§V¡V¨T´2·6±6Ð:Ó;ˆ	Ø6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆÜ
×Ñ˜v xÕ0r
   Úsubtype)Úint8Úint32Úuint16Úuint64Úfloat32)r'   r(   r%   rF   c                 óº  — g d¢}|dk(  rdnd}t        j                  t        j                  dd|dg|¬«      «      }|j	                  t        j
                  |d«      «      }|j                  j                  j                  dk(  sJ ‚ t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }t        j                  ||«       y )	NrT   rq   ì   90       r   r   r   rW   r   ©r   r_   r   rZ   r   r   rg   rh   r.   r/   r0   r`   ©	r3   rm   r$   rb   Úbigrc   rd   r4   r5   s	            r   Ú%test_sparse_groupby_preserves_subtypez7TestSparseGroupby.test_sparse_groupby_preserves_subtypeˆ   s»   € ò $ˆØ&¨(Ò2‰m¸ˆÜ—I‘IœbŸh™h¨¨1¨c°1 ~¸WÔEÓFˆ	Ø×%Ñ%¤b§n¡n°W¸aÓ&@ÓAˆ
Ø×Ñ×(Ñ(×.Ñ.°!Ò3Ð3Ð3à6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆÜ
×Ñ˜v xÕ0r
   c                 ó¤  — g d¢}t        j                  t        j                  g d¢d¬«      «      }|j	                  t        j
                  dd«      «      }|j                  j                  j                  dk(  sJ ‚ t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }t        j                  ||«       y )NrT   )r   r   r   r   r   rW   g        r   ru   ©r3   r$   rb   rc   rd   r4   r5   s          r   Ú$test_sparse_groupby_wider_fill_valuez6TestSparseGroupby.test_sparse_groupby_wider_fill_value™   s¥   € ò $ˆÜ—I‘IœbŸh™h¢|¸7ÔCÓDˆ	Ø×%Ñ%¤b§n¡n°W¸cÓ&BÓCˆ
Ø×Ñ×(Ñ(×.Ñ.°!Ò3Ð3Ð3à6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆÜ
×Ñ˜v xÕ0r
   c           
      ó  — g d¢}|dk(  rdnd}t        j                  t        j                  dd|d|dg|¬«      «      }|j	                  t        j
                  |d«      «      }|j                  j                  j                  dk(  sJ ‚ t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }|j	                  t        j
                  |d«      «      }t        j                  ||«       y )Nr   rq   rt   r   r   r   rW   ru   rv   s	            r   Ú0test_sparse_groupby_first_last_preserves_subtypezBTestSparseGroupby.test_sparse_groupby_first_last_preserves_subtype¦   sÙ   € ò .ˆØ&¨(Ò2‰m¸ˆÜ—I‘IœbŸh™h¨¨1¨c°1°c¸1Ð'=ÀWÔMÓNˆ	Ø×%Ñ%¤b§n¡n°W¸aÓ&@ÓAˆ
Ø×Ñ×(Ñ(×.Ñ.°!Ò3Ð3Ð3à6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆØ—?‘?¤2§>¡>°'¸1Ó#=Ó>ˆÜ
×Ñ˜v xÕ0r
   Úunit)zM8[s]úM8[ns]zm8[s]úm8[ns]c                 ó8  — g d¢}t        j                  t        j                  g d¢|¬«      «      }|d   dk(  r|d   nt        j                  |d   «      }|j                  t        j                  ||«      «      }|j                  j                  j                  dk(  sJ ‚ t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }|j                  t        j                  ||«      «      }t        j                  ||«       y )Nr   )r   r   r   r   r   r   rW   r   ÚMr   )r   r_   r   rZ   Ú	Timedeltar   r   rg   rh   r.   r/   r0   r`   )	r3   r~   r$   rb   rc   Úfillrd   r4   r5   s	            r   Ú+test_sparse_groupby_first_last_datetimelikez=TestSparseGroupby.test_sparse_groupby_first_last_datetimelike¸   sá   € ò .ˆÜ—I‘IœbŸh™hÒ'9ÀÔFÓGˆ	Ø# A™w¨#š~ˆy˜Š|´2·<±<À	È!ÁÓ3MˆØ×%Ñ%¤b§n¡n°T¸4Ó&@ÓAˆ
Ø×Ñ×(Ñ(×.Ñ.°!Ò3Ð3Ð3à6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆØ—?‘?¤2§>¡>°$¸Ó#=Ó>ˆÜ
×Ñ˜v xÕ0r
   Únat_fillN)údatetime64[ns]zdatetime64[s]útimedelta64[ns]ztimedelta64[us])r'   r(   r&   rC   rH   rM   c                 ó¤  — g d¢}t        j                  t        j                  g d¢|¬«      «      }|j	                  t        j
                  ||«      «      }|j                  j                  j                  dk(  sJ ‚ t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }t        j                  ||«       y )NrT   ©r   r   r   ÚNaTrW   r   ru   )	r3   r~   r$   r†   rb   rc   rd   r4   r5   s	            r   Ú test_sparse_groupby_datetimelikez2TestSparseGroupby.test_sparse_groupby_datetimelikeÉ   s¦   € ò $ˆÜ—I‘IœbŸh™hÒ'7¸tÔDÓEˆ	Ø×%Ñ%¤b§n¡n°T¸8Ó&DÓEˆ
Ø×Ñ×(Ñ(×.Ñ.°!Ò3Ð3Ð3à6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆÜ
×Ñ˜v xÕ0r
   )r'   r(   r&   rH   c                 óÊ  — g d¢}t        j                  t        j                  g d¢d¬«      «      }|j	                  t        j
                  dt        j                  d«      «      «      }|j                  j                  j                  dk(  sJ ‚ t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }t        j                  ||«       y )NrT   ©r   r   r   r   r   rW   r   r   )r   r_   r   rZ   r   r   Ú	Timestamprg   rh   r.   r/   r0   r`   rz   s          r   Ú5test_sparse_groupby_datetimelike_subsecond_fill_valuezGTestSparseGroupby.test_sparse_groupby_datetimelike_subsecond_fill_valueÛ   s­   € ò $ˆÜ—I‘IœbŸh™h¢|¸8ÔDÓEˆ	Ø×%Ñ%¤b§n¡n°X¼r¿|¹|ÈA»Ó&OÓPˆ
Ø×Ñ×(Ñ(×.Ñ.°!Ò3Ð3Ð3à6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆÜ
×Ñ˜v xÕ0r
   )r'   r%   rF   c                 óÊ  — g d¢}t        j                  t        j                  g d¢d¬«      «      }|j	                  t        j
                  dt        j                  d«      «      «      }|j                  j                  j                  dk(  sJ ‚ t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }t        j                  ||«       y )NrT   rŽ   r€   rW   r   r   )r   r_   r   rZ   r   r   rƒ   rg   rh   r.   r/   r0   r`   rz   s          r   Ú2test_sparse_groupby_timedelta_subsecond_fill_valuezDTestSparseGroupby.test_sparse_groupby_timedelta_subsecond_fill_valueè   s­   € ò $ˆÜ—I‘IœbŸh™h¢|¸8ÔDÓEˆ	Ø×%Ñ%¤b§n¡n°X¼r¿|¹|ÈA»Ó&OÓPˆ
Ø×Ñ×(Ñ(×.Ñ.°!Ò3Ð3Ð3à6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆÜ
×Ñ˜v xÕ0r
   r%   rF   c                 óZ  — g d¢}t        j                  t        j                  g d¢d¬«      «      }|j	                  t        j
                  d|«      «      } t        |j                  |«      |«      «       } t        |j                  |«      |«      «       }t        j                  ||«       y )NrT   rŠ   r€   rW   )
r   r_   r   rZ   r   r   r.   r/   r0   r`   )r3   r$   r†   rb   rc   rd   r4   r5   s           r   Ú!test_sparse_groupby_timedelta_sumz3TestSparseGroupby.test_sparse_groupby_timedelta_sumô   s†   € ò $ˆÜ—I‘IœbŸh™hÒ'7¸xÔHÓIˆ	Ø×%Ñ%¤b§n¡n°X¸xÓ&HÓIˆ
à6”˜×+Ñ+¨DÓ1°2Ó6Ó8ˆØ7”7˜9×,Ñ,¨TÓ2°BÓ7Ó9ˆÜ
×Ñ˜v xÕ0r
   zunit, op))r‡   r%   )r‡   rB   )r‡   r*   )r‡   Úskew)r‡   Úkurt)r‡   rF   )r‡   rI   )r‡   r=   )r‡   r>   )rˆ   rB   )rˆ   r*   )rˆ   r•   )rˆ   r–   )rˆ   rI   c                 ó@  — g d¢}t        j                  t        j                  g d¢|¬«      «      }|j	                  t        j
                  ||«      «      }t        j                  t        «      5 } t        |j                  |«      |«      «        d d d «       t        j                  t        «      5 } t        |j                  |«      |«      «        d d d «       t        j                  «      t        j                  «      k(  sJ ‚y # 1 sw Y   ŒyxY w# 1 sw Y   ŒCxY w)NrT   rŠ   rW   )r   r_   r   rZ   r   r   ÚpytestÚraisesÚ	TypeErrorr.   r/   ÚstrÚvalue)	r3   r~   r$   r†   rb   rc   rd   Ú
sparse_errÚ	dense_errs	            r   Ú(test_sparse_groupby_datetimelike_invalidz:TestSparseGroupby.test_sparse_groupby_datetimelike_invalid   sÚ   € ò0 $ˆÜ—I‘IœbŸh™hÒ'7¸tÔDÓEˆ	Ø×%Ñ%¤b§n¡n°T¸8Ó&DÓEˆ
ä�]‰]œ9Ó%ð 	4¨Ø1ŒG�J×&Ñ& tÓ,¨bÓ1Ô3÷	4ä�]‰]œ9Ó%ð 	3¨Ø0ŒG�I×%Ñ% dÓ+¨RÓ0Ô2÷	3ä�:×#Ñ#Ó$¬¨I¯O©OÓ(<Ò<Ð<Ñ<÷		4ð 	4ú÷	3ð 	3ús   Á/!DÂ1!DÄDÄD)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r˜   ÚmarkÚparametrizer6   r<   r@   rE   rK   rN   rR   r\   re   ri   rl   rx   r{   r}   r…   r   r‹   rŒ   r�   r’   r”   rŸ   © r
   r   r#   r#      sq  „ ÙIà‡[�[×Ñ˜TÒ#NÓOñ0ó Pð0ð ‡[�[×Ñ˜T G¨VÐ#4Ó5ñCó 6ðCð ‡[�[×Ñ˜T E¨5 >Ó2ñ0ó 3ð0ð ‡[�[×Ñ˜TÒ#<Ó=ñ0ó >ð0ð ‡[�[×Ñ˜TÒ#LÓMñ0ó Nð0ò0ò4ò0ò1ð ‡[�[×Ñ˜TÒ#QÓRñ1ó Sð1ð ‡[�[×Ñ˜TÒ#8Ó9ñ1ó :ð1ð ‡[�[×ÑØÒCóð ‡[�[×Ñ˜TÒ#BÓCñ1ó Dóð1ð ‡[�[×Ñ˜TÒ#BÓCñ
1ó Dð
1ð ‡[�[×Ñ˜T G¨VÐ#4Ó5Ø‡[�[×ÑØÒCóñ1óó 6ð1ð ‡[�[×Ñ˜T G¨VÐ#4Ó5Ø‡[�[×Ñ˜VÒ%KÓLñ1ó Mó 6ð1ð ‡[�[×Ñ˜Z¨$°·±¨Ó8Ø‡[�[×ÑØÚQóð ‡[�[×Ñ˜TÒ#UÓVñ
1ó Wó	ó 9ð
1ð ‡[�[×Ñ˜TÒ#CÓDñ
1ó Eð
1ð ‡[�[×Ñ˜TÒ#;Ó<ñ	1ó =ð	1ð ‡[�[×Ñ˜Z¨$°·±¨Ó8Ø‡[�[×Ñ˜T E¨8Ð#4Ó5ñ1ó 6ó 9ð1ð ‡[�[×Ñ˜Z¨$°·±¨Ó8Ø‡[�[×ÑØò	
óñ(=ó)ó 9ñ*=r
   r#   )Únumpyr   r˜   Úpandasr   Úpandas._testingÚ_testingr0   Úpandas.core.arrays.sparser   ÚfixturerY   r	   r!   r#   r¦   r
   r   ú<module>r­      s_   ðÛ Û ã Ý Ý 1ð €‡�˜˜2Ÿ6™6�{Ô#ñó $ðð ‡�ñó ð÷B=ò B=r
   