Ë
    ÷Q(hj¦  ã                   ó<  — 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 d dlmZ d dlmZmZmZ d d	lmZmZmZ d d
lmZ d dlmZmZmZm Z  ejB                  jE                  deef«      d„ «       Z#ejB                  jE                  dddggidfdddgddggidfddgd ggidfg«      d„ «       Z$ejB                  jE                  dddg«      d„ «       Z%d„ Z&ejB                  jE                  dg d¢«      ejB                  jE                  dddg«      d„ «       «       Z'ejB                  jE                  d e(dd«      «      ejB                  jE                  d  e(dd«      «      ejB                  jE                  dd!d"g«      ejB                  jE                  dd#dg«      d$„ «       «       «       «       Z)ejB                  jE                  d%d&gd'd(g«      d)„ «       Z*ejB                  jE                  g d*¢d!dd ejV                  d dgdd+gd,d-gg«      fd!d ejV                  g d.¢«       ejV                  ddgd/d+gd,d-gg«      fd!d/d ejV                  d dgdd,gd/d0gd,d-gg«      fd"dd ejV                  d dgddgd,d-gg«      fd"d ejV                  g d.¢«       ejV                  ddgdd+gd,d-gg«      fg«      d1„ «       Z,ejB                  jE                  d%d&gd'd(g«      d2„ «       Z-d3„ Z.d4„ Z/ejB                  jE                  dddg«      d5„ «       Z0ejB                  jE                  d%d&gd'd(g«      ejB                  jE                  dg d6¢«      d7„ «       «       Z1d8„ Z2ejB                  jg                  e  ed9«      k  d:¬;«      ejB                  jE                  d e(dd«      «      ejB                  jE                  dd!d"g«      ejB                  jE                  dg d<¢«      ejB                  jE                  d=d>d?g«      d@„ «       «       «       «       «       Z4ejB                  jg                  e  ed9«      k\  d:¬;«      dA„ «       Z5ejB                  jE                  d dd0g«      ejB                  jE                  d=d?d>g«      ejB                  jE                  ddd/g«      ejB                  jE                  dg d<¢«      ejB                  jE                  dBd>d?g«      dC„ «       «       «       «       «       Z6ejB                  jE                  dddDidEfddFidEfddGidEfddHidIfg«      dJ„ «       Z7 ejp                  «       dK„ «       Z9ejB                  jE                  dLdd?d> e:dd«      fdd>d> e:dd«      fdd?d?d dgfdd>d?dgfdMd?d>g dN¢fdMd>d>ddgfdMd?d?d gfdMd>d?g fg«      ejB                  jE                  dOdgez   ez   «      dP„ «       «       Z; ejp                  «       dQ„ «       Z<ejB                  jE                  dLdd?d> e:d d,«      fdd>d> e:dd,«      fdd?d?g dR¢fdd>d?g dS¢fdTd?d>g dU¢fdTd>d>g dV¢fdTd?d?d d/gfdTd>d?d/gfdd?d> e:dd«      fdd>d> e:dd«      fdd?d?g dR¢fdd>d?g dS¢fdMd?d>g dW¢fdMd>d> e:dd«      fdMd?d?d d/gfdMd>d?d/gfdXd?d>g dY¢fdXd>d>g dZ¢fdXd?d?d gfdXd>d?g fg«      ejB                  jE                  dOdgez   ez   «      d[„ «       «       Z=d\„ Z>ejB                  jE                  g d]¢dd?d>e?fdd?d>e?fdd?d>ej€                  fdd?d>ej‚                  fdd>d>ej‚                  fdd>d?ej‚                  fd/d>d>ej‚                  fd/d>d?ej‚                  fg«      ejB                  jE                  d^e«      d_„ «       «       ZBejB                  jE                  g d]¢dd?d>e?fdd?d>e?fdd?d>ej€                  fdd?d>ej‚                  fdd>d>ej‚                  fdd>d?ej‚                  fg«      ejB                  jE                  d`e«      da„ «       «       ZCejB                  jE                  dbg dc¢«      ejB                  jE                  ddg de¢«      ejB                  jE                  dfd?d>g«      ejB                  jE                  d=d?d>g«      ejB                  jE                  d`e«      dg„ «       «       «       «       «       ZDejB                  jE                  g d]¢dd?d>ej€                  fdd?d>ej‚                  fdd>d>ej‚                  fdd>d?ej‚                  fg«      ejB                  jE                  d`e«      dh„ «       «       ZEejB                  jE                  g di¢g dj¢«      ejB                  jE                  d`e«      dk„ «       «       ZFejB                  jE                  d=dfgg dl¢«      ejB                  jE                  d`e«      dm„ «       «       ZGejB                  jE                  g dn¢g do¢«      ejB                  jE                  d`e«      dp„ «       «       ZHejB                  jE                  dfd?d>g«      ejB                  jE                  d=d?d>g«      ejB                  jE                  d`e«      dq„ «       «       «       ZIejB                  jE                  drdsdtd e? ej”                   ej–                  ej˜                  «      jš                  «      dz   «      fdud e? ej”                   ej–                  ej˜                  «      jš                  «      «      fg«      ejB                  jE                  dfd?d>g«      ejB                  jE                  d=d?d>g«      ejB                  jE                  d`e«      dv„ «       «       «       «       ZNejB                  jE                  dfd?d>g«      ejB                  jE                  d=d?d>g«      ejB                  jE                  d`e«      dw„ «       «       «       ZOejB                  jE                  dxeez   «      dy„ «       ZPdz„ ZQejB                  j¥                  e j¦                  d{k(  d|d?¬}«      ejB                  jE                  d`e«      d~„ «       «       ZTy)é    N)Úassert_allcloseÚassert_array_equal)Úsparse)ÚBSpline)Úrandom)ÚLinearRegression)ÚPipeline)ÚKBinsDiscretizerÚPolynomialFeaturesÚSplineTransformer)Ú_calc_expanded_nnzÚ_calc_total_nnzÚ_get_sizeof_LARGEST_INT_t)Úassert_array_almost_equal)ÚCSC_CONTAINERSÚCSR_CONTAINERSÚparse_versionÚ
sp_versionÚestc                 ó*  — t        j                  d«      j                  dd«      }d„ } | | «       j                  |«      «      sJ ‚ | | d¬«      j                  |«      «      sJ ‚t        j                   | d¬«      j                  |«      «      sJ ‚y)	z+Test that output array has the given order.é
   é   é   c                 ó@   — t        j                  | j                  «      S )N)ÚnpÚ	isfortranÚT)Úas    úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/preprocessing/tests/test_polynomial.pyÚis_c_contiguousz?test_polynomial_and_spline_array_order.<locals>.is_c_contiguous$   s   € Ü�|‰|˜AŸC™CÓ Ð ó    ÚC)ÚorderÚFN)r   ÚarangeÚreshapeÚfit_transformr   )r   ÚXr    s      r   Ú&test_polynomial_and_spline_array_orderr)      s~   € ô 	�	‰	�"‹×Ñ˜a Ó#€Aò!ñ ™3›5×.Ñ.¨qÓ1Ô2Ð2Ð2Ù™3 Sœ>×7Ñ7¸Ó:Ô;Ð;Ð;Ü�<‰<™ #œ×4Ñ4°QÓ7Ô8Ð8Ñ8r!   zparams, err_msgÚknotsé   z0Number of knots, knots.shape\[0\], must be >= 2.r   z*knots.shape\[1\] == n_features is violatedz(knots must be sorted without duplicates.c                 ó¤   — dgdgg}t        j                  t        |¬«      5  t        di | ¤Žj	                  |«       ddd«       y# 1 sw Y   yxY w)zATest that we raise errors for invalid input in SplineTransformer.r+   r   ©ÚmatchN© ©ÚpytestÚraisesÚ
ValueErrorr   Úfit©ÚparamsÚerr_msgr(   s      r   Ú(test_spline_transformer_input_validationr8   ,   sJ   € ð ˆˆqˆcˆ
€Aä	�‰”z¨Ô	1ñ +ÜÑ#˜FÑ#×'Ñ'¨Ô*÷+÷ +ñ +úó   ¢AÁAÚextrapolationÚcontinueÚperiodicc                 óª   — t        j                  d«      j                  dd«      }ddgddgddgddgddgg}t        d	|| ¬
«      j	                  |«      }y)zATest that SplineTransformer accepts integer value knot positions.é   r   r   r   r+   r   é   é   é   )Údegreer*   r:   N)r   r%   r&   r   r'   )r:   r(   r*   Ú_s       r   Ú%test_spline_transformer_integer_knotsrD   <   s`   € ô 	�	‰	�"‹×Ñ˜b !Ó$€AØ�ˆV�a˜�V˜a ˜V b¨" X°°B¨xÐ8€EÜØ˜¨]ô	ç�m�AÓñ r!   c                  ó@  — t        j                  d«      j                  dd«      } t        ddd¬«      j	                  | «      }|j                  «       }t        |g d¢«       t        ddd¬«      j	                  | «      }|j                  d	d
g«      }t        |g d¢«       y)z<Test that SplineTransformer generates correct features name.r>   r   r   rA   T)Ún_knotsrB   Úinclude_bias)
Úx0_sp_0Úx0_sp_1Úx0_sp_2Úx0_sp_3Úx0_sp_4Úx1_sp_0Úx1_sp_1Úx1_sp_2Úx1_sp_3Úx1_sp_4Fr   Úb)Úa_sp_0Úa_sp_1Úa_sp_2Úa_sp_3Úb_sp_0Úb_sp_1Úb_sp_2Úb_sp_3N)r   r%   r&   r   r4   Úget_feature_names_outr   )r(   ÚspltÚfeature_namess      r   Ú%test_spline_transformer_feature_namesr^   F   s’   € ä
�	‰	�"‹×Ñ˜b !Ó$€AÜ Q¨q¸tÔD×HÑHÈÓK€DØ×.Ñ.Ó0€MÜØò	
ôô   Q¨q¸uÔE×IÑIÈ!ÓL€DØ×.Ñ.°°S¨zÓ:€MÜØò		
õr!   )ÚconstantÚlinearr;   r<   rB   rA   c                 ó<  — t        j                  d«      j                  dd«      }t        || ¬«      j	                  |«      }|j                  ddg«      }t        |«      |j                  k(  sJ ‚|j                  |«      }|j                  d   t        |«      k(  sJ ‚y)	zsTest feature names are correct for different extrapolations and degree.

    Non-regression test for gh-25292.
    r>   r   r   )rB   r:   r   rR   r+   N)
r   r%   r&   r   r4   r[   ÚlenÚn_features_out_Ú	transformÚshape)r:   rB   r(   r\   r]   ÚX_transs         r   Ú7test_split_transform_feature_names_extrapolation_degreerg   l   sŒ   € ô 	�	‰	�"‹×Ñ˜b !Ó$€AÜ F¸-ÔH×LÑLÈQÓO€DØ×.Ñ.°°S¨zÓ:€MÜˆ}Ó ×!5Ñ!5Ò5Ð5Ð5à�n‰n˜QÓ€GØ�=‰=˜Ñœs =Ó1Ò1Ð1Ñ1r!   r   rF   ÚuniformÚquantiler_   c                 óh  — t        j                  ddd«      dd…df   }t         j                  dgg|ddd…dd…f   dggf   }|ddd…dd…f   }|dk(  r|| z   }t        || |d|¬«      }|j	                  |«       ||fD ]2  }t        t        j                  |j                  |«      d¬	«      d«       Œ4 y)
z–Test that B-splines are indeed a decomposition of unity.

    Splines basis functions must sum up to 1 per row, if we stay in between boundaries.
    r   r+   éd   Nr   r<   T)rF   rB   r*   rG   r:   ©Úaxis)r   ÚlinspaceÚr_r   r4   r   Úsumrd   )rB   rF   r*   r:   r(   ÚX_trainÚX_testr\   s           r   Ú+test_spline_transformer_unity_decompositionrs      sÆ   € ô 	�‰�A�q˜#Óšq $˜wÑ'€Aä�e‰e�a�S�E˜1™S˜q˜S¢!˜V™9¨ s eÐ+Ñ,€GØˆqˆt�!ˆt’Qˆw‰Z€Fà˜
Ò"Ø˜FÑ"ˆäØØØØØ#ô€Dð 	‡H�HˆWÔØ�vÐò >ˆÜœŸ™˜tŸ~™~¨aÓ0°qÔ9¸1Õ=ñ>r!   ÚbiasÚ	intercept©TF©FTc           	      ó.  — t        j                  ddd«      dd…df   }t        j                  |dd…df   «      dz   }t        dt	        dd| d	¬
«      fdt        |¬«      fg¬«      }|j                  ||«       t        |j                  |«      |d¬«       y)z7Test that B-splines fit a sinusodial curve pretty well.r   r   rk   Nr   Úsplineé   rA   r_   ©rF   rB   rG   r:   Úols©Úfit_intercept©Ústepsçü©ñÒMbP?©Úrtol)	r   rn   Úsinr	   r   r   r4   r   Úpredict)rt   ru   r(   ÚyÚpipes        r   Ú)test_spline_transformer_linear_regressionrˆ   œ   s™   € ô 	�‰�A�r˜3Ó¢ 4 Ñ(€AÜ
�‰ˆq’�A�‰w‹˜!Ñ€AÜð Ü!ØØØ!%Ø",ô	ðð Ô$°9Ô=Ð>ð
ô€Dð 	‡H�HˆQ�„NÜ�D—L‘L “O Q¨TÖ2r!   )r*   rF   Úsample_weightÚexpected_knotsé   é   é   )r   r   r+   r+   r   rA   r+   é   r   c           
      ó¢   — t        j                  ddgddgddgddgddgddgddgg«      }t        j                  || ||¬	«      }t	        ||«       y
)zJCheck the behaviour to find knot positions with and without sample_weight.r   r   rA   rŽ   rŒ   r   r‹   r�   )r(   r*   rF   r‰   N)r   Úarrayr   Ú_get_base_knot_positionsr   )r*   rF   r‰   rŠ   r(   Ú
base_knotss         r   Ú/test_spline_transformer_get_base_knot_positionsr“   ³   sb   € ô0 	�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&°1°a°&¸1¸a¸&À1ÀbÀ'ÐJÓK€AÜ"×;Ñ;Ø
�5 '¸ô€Jô �J Õ/r!   c           	      ó”  — d„ }t        j                  ddd«      dd…df   }t        dt        dd| d	¬
«      fdt	        |¬«      fg¬«      }|j                  | ||dd…df   «      «       t        j                  ddd«      dd…df   }|j                  |«      }t        | ||dd…df   «      dd¬«       t        |dd |dd d¬«       y)z5Test that B-splines fit a periodic curve pretty well.c                 ó®   — t        j                  dt         j                  z  | z  «      t        j                  dt         j                  z  | z  «      z
  dz   S )Nr   r‹   rA   )r   r„   Úpi)Úxs    r   Úfz=test_spline_transformer_periodic_linear_regression.<locals>.f×   s<   € Ü�v‰v�aœ"Ÿ%™%‘i !‘mÓ$¤r§v¡v¨a´"·%±%©i¸!©mÓ'<Ñ<¸qÑ@Ð@r!   r   r+   ée   Nry   r>   rA   r<   r{   r|   r}   r   éÿÿÿÿr   i-  g{®Gáz„?)Úatolrƒ   rk   éÈ   r�   r‚   )r   rn   r	   r   r   r4   r…   r   )rt   ru   r˜   r(   r‡   ÚX_Úpredictionss          r   Ú2test_spline_transformer_periodic_linear_regressionrŸ   Ò   sÝ   € ò
Aô 	�‰�A�q˜#Óšq $˜wÑ'€AÜð Ü!ØØØ!%Ø",ô	ðð Ô$°9Ô=Ð>ð
ô€Dð 	‡H�HˆQ‘�!’A�q�D‘'“
Ôô 
�‰�R˜˜CÓ	 ¢ D Ñ	)€BØ—,‘,˜rÓ"€KÜ�K¡ 2¢a¨ d¡8£°4¸dÕCÜ�K  #Ð&¨°C¸Ð(<À4ÖHr!   c                  óJ  — t        j                  ddd«      dd…df   } d}t        |ddgdgd	gg¬
«      }|j                  | «      }t        j                  d	dgdd	gd	dgdd	gg«      }t        t        j                  dd«      ||d«      } || dd…df   «      }t        ||«       y)z@Test that the backport of extrapolate="periodic" works correctlyéþÿÿÿg      @r   Nr   r<   g      ð¿ç        ç      ð?©rB   r:   r*   éýÿÿÿrŽ   r   )r   rn   r   r'   r�   r   r%   r   )r(   rB   ÚtransformerÚXtÚcoefÚsplÚXspls          r   Ú0test_spline_transformer_periodic_spline_backportr«   ò   s³   € ä
�‰�B˜˜RÓ ¢ D Ñ)€AØ€Fô $Ø Z¸¸ÀÀÈÀuÐ7Mô€Kð 
×	"Ñ	" 1Ó	%€Bô �8‰8�c˜3�Z # s ¨c°3¨Z¸#¸s¸ÐDÓE€DÜ
”"—)‘)˜B Ó" D¨&°*Ó
=€CÙˆq’�A�‰w‹<€DÜ�B˜Õr!   c            
      ó  — t        j                  ddd«      dd…df   } t        dddgdgd	gd
gdgdgg¬«      }t        dddgd	gd
gdgdgdgg¬«      }|j                  | «      }|j                  | «      }t	        ||dd…g d¢f   «       y)zJTest if shifted knots result in the same transformation up to permutation.r   r   r™   NrA   r<   r¢   r£   ç      @ç      @ç      @ç       @r¤   g      "@)rŽ   r   r+   r   rA   )r   rn   r   r'   r   )r(   Útransformer_1Útransformer_2ÚXt_1ÚXt_2s        r   Ú4test_spline_transformer_periodic_splines_periodicityrµ     s­   € ä
�‰�A�r˜3Ó¢ 4 Ñ(€Aä%ØØ Øˆu�s�e˜c˜U S E¨C¨5°3°%Ð8ô€Mô &ØØ Øˆu�s�e˜c˜U S E¨C¨5°3°%Ð8ô€Mð ×&Ñ& qÓ)€DØ×&Ñ& qÓ)€Dä�D˜$šq¢/Ð1Ñ2Õ3r!   c           
      ó,  — t        j                  ddd«      dd…df   }t        | ddgdgdgd	gd
gdgg¬«      }|j                  |«      }|j	                  «       |j                  «       z
  t        |«      z  }d|z  }|}t        d| dz   «      D ]F  }t        j                  |d¬«      }t        j                  |«      j	                  «       |k  sJ ‚||z  }ŒH t        j                  |d¬«      }t        j                  |«      j	                  «       dkD  sJ ‚y)z?Test that spline transformation is smooth at first / last knot.r¡   r   i'  Nr<   r¢   r£   r­   r®   r¯   r°   r¤   r+   r   rl   )
r   rn   r   r'   ÚmaxÚminrb   ÚrangeÚdiffÚabs)	rB   r(   r¦   r§   ÚdeltaÚtolÚdXtÚdrº   s	            r   Ú3test_spline_transformer_periodic_splines_smoothnessrÀ     s  € ô 	�‰�B˜˜FÓ#¢A t GÑ,€Aä#ØØ Øˆu�s�e˜c˜U S E¨C¨5°3°%Ð8ô€Kð
 
×	"Ñ	" 1Ó	%€Bà�U‰U‹W�q—u‘u“wÑ¤# a£&Ñ(€EØ
ˆu‰*€Cà
€Cô �1�f˜q‘jÓ!ò ˆä�w‰w�s Ô#ˆÜ�v‰v�d‹|×ÑÓ! CÒ'Ð'Ð'à�U‰l‰ðô �7‰7�3˜QÔ€DÜ�6‰6�$‹<×ÑÓ Ò!Ð!Ñ!r!   )r+   r   rA   rŽ   r   c           	      ó  — t        j                  ddd«      dd…df   }|j                  «       }t        dt	        d|| d¬«      gd	t        |¬
«      gg«      }|j                  ||«       t        |j                  dgdgg«      ddg«       t        dt	        d|| d¬«      gd	t        |¬
«      gg«      }|j                  ||«       t        |j                  dgdgg«      ddg«       t	        d|| d¬«      }|j                  |«       d}t        j                  t        |¬«      5  |j                  dgg«       ddd«       t        j                  t        |¬«      5  |j                  dgg«       ddd«       y# 1 sw Y   ŒAxY w# 1 sw Y   yxY w)z1Test that B-spline extrapolation works correctly.rš   r+   rk   Nry   rŽ   r_   r{   r|   r}   iöÿÿÿr   r`   Úerrorú0X contains values beyond the limits of the knotsr-   )r   rn   Úsqueezer	   r   r   r4   r   r…   r1   r2   r3   rd   )rt   ru   rB   r(   r†   r‡   r\   Úmsgs           r   Ú%test_spline_transformer_extrapolationrÆ   A  s–  € ô
 	�‰�B˜˜3Ó¢ 4 Ñ(€AØ	�	‰	‹€Aô ð Ü!ØØ!Ø!%Ø",ô	ðð Ô$°9Ô=Ð>ð	
ó€Dð 	‡H�HˆQ�„NÜ�D—L‘L 3 %¨!¨ Ó.°°Q°Ô8ô ð Ü!ØØ!Ø!%Ø"*ô	ðð Ô$°9Ô=Ð>ð	
ó€Dð 	‡H�HˆQ�„NÜ�D—L‘L 3 %¨!¨ Ó.°°a°Ô9ô Ø˜&¨tÀ7ô€Dð 	‡H�HˆQ„KØ
<€CÜ	�‰”z¨Ô	-ñ  Ø�‰˜˜�wÔ÷ ä	�‰”z¨Ô	-ñ Ø�‰˜˜�uÔ÷ð ÷ ð  ú÷ð ús   Ä"E6ÅFÅ6E?ÆFc                  ó,  — t         j                  j                  d«      } | j                  d«      j	                  dd«      }d}|dz   }t        |ddd¬«      }|j                  |«      }t        |d	d¬
«      }|j                  |«      }t        ||d¬«       y)zCTest that a B-spline of degree=0 is equivalent to KBinsDiscretizer.iû| rœ   r+   r   r   ri   T)rF   rB   r*   rG   zonehot-dense)Ún_binsÚencodeÚstrategyg‚vIhÂ%<=r‚   N)	r   r   ÚRandomStateÚrandnr&   r   r'   r
   r   )Úrngr(   rÈ   rF   r\   ÚsplinesÚkbdÚkbinss           r   Ú'test_spline_transformer_kbindiscretizerrÑ   y  s�   € ä
�)‰)×
Ñ
 Ó
&€CØ�	‰	�#‹×Ñ˜s AÓ&€AØ€FØ�q‰j€GäØ ¨À$ô€Dð × Ñ  Ó#€Gä
 &°È*Ô
U€CØ×Ñ˜aÓ €Eô �G˜U¨Ö/r!   ú1.8.0ú9The option `sparse_output` is available as of scipy 1.8.0)Úreason)rÂ   r_   r`   r;   r<   rG   FTc                 ó:  — t         j                  j                  |«      }|j                  d«      j	                  dd«      }t        | |||d¬«      }t        | |||d¬«      }|j                  |«       |j                  |«       |j                  |«      }	|j                  |«      }
t        j                  |	«      r|	j                  dk(  sJ ‚t        |
|	j                  «       «       t        j                  |d¬	«      }t        j                  |d¬	«      }t         j                  t        j                   |dz
  |d
«      t        j                   ||dz   d
«      f   }|dk(  rod}t#        j$                  t&        |¬«      5  |j                  |«       d d d «       d}t#        j$                  t&        |¬«      5  |j                  |«       d d d «       y t        |j                  |«      |j                  |«      j                  «       «       y # 1 sw Y   ŒzxY w# 1 sw Y   y xY w)Nrœ   é(   r   F)rB   r*   r:   rG   Úsparse_outputTÚcsrr   rl   r   rÂ   rÃ   r-   zOut of bounds)r   r   rË   rÌ   r&   r   r4   rd   r   ÚissparseÚformatr   ÚtoarrayÚaminÚamaxro   rn   r1   r2   r3   )rB   r*   r:   rG   Úglobal_random_seedrÍ   r(   Ú
splt_denseÚsplt_sparseÚX_trans_sparseÚX_trans_denseÚX_minÚX_maxÚX_extrarÅ   s                  r   Ú%test_spline_transformer_sparse_outputræ   �  sÖ  € ô �)‰)×
Ñ
Ð 2Ó
3€CØ�	‰	�#‹×Ñ˜r 1Ó%€Aä"ØØØ#Ø!Øô€Jô $ØØØ#Ø!Øô€Kð ‡N�N�1ÔØ‡O�O�AÔà ×*Ñ*¨1Ó-€NØ×(Ñ(¨Ó+€MÜ�?‰?˜>Ô*¨~×/DÑ/DÈÒ/MÐMÐMÜ�M >×#9Ñ#9Ó#;Ô<ô �G‰G�A˜AÔ€EÜ�G‰G�A˜AÔ€EÜ�e‰eÜ
�‰�E˜A‘I˜u bÓ)¬2¯;©;°u¸eÀa¹iÈÓ+LÐLñ€Gð ˜ÒØ@ˆÜ�]‰]œ:¨SÔ1ñ 	*Ø× Ñ  Ô)÷	*àˆÜ�]‰]œ:¨SÔ1ñ 	+Ø×!Ñ! 'Ô*÷	+ð 	+ô 	Ø× Ñ  Ó)¨;×+@Ñ+@ÀÓ+I×+QÑ+QÓ+Sõ	
÷	*ð 	*ú÷	+ð 	+ús   Å:HÆ1HÈHÈHc                  ó¦   — dgdgg} t        j                  t        d¬«      5  t        d¬«      j	                  | «       ddd«       y# 1 sw Y   yxY w)zDTest that SplineTransformer with sparse=True raises for scipy<1.8.0.r+   r   zscipy>=1.8.0r-   T)r×   Nr0   )r(   s    r   Ú?test_spline_transformer_sparse_output_raise_error_for_old_scipyrè   Ç  sG   € ð ˆˆqˆcˆ
€AÜ	�‰”z¨Ô	8ñ 5Ü¨Ô-×1Ñ1°!Ô4÷5÷ 5ñ 5ús   ¢AÁAr×   c                 ó.  — |r't         t        d«      k  rt        j                  d«       t	        | ||||¬«      }t        j                  ddd«      dd…df   }|j                  |«       |j                  |«      j                  d   |j                  k(  sJ ‚y)z8Test that transform results in n_features_out_ features.rÒ   rÓ   )rF   rB   rG   r:   r×   r   r+   r   N)r   r   r1   Úskipr   r   rn   r4   rd   re   rc   )rF   rG   rB   r:   r×   r\   r(   s          r   Ú&test_spline_transformer_n_features_outrë   Ò  s‰   € ñ œ¤m°GÓ&<Ò<Ü�‰ÐOÔPäØØØ!Ø#Ø#ô€Dô 	�‰�A�q˜"Óša ˜gÑ&€AØ‡H�HˆQ„Kà�>‰>˜!Ó×"Ñ" 1Ñ%¨×)=Ñ)=Ò=Ð=Ñ=r!   )rš   r   z&degree=\(min_degree, max_degree\) must)r   g      ø?©rA   r   )r+   r   rA   z'int or tuple \(min_degree, max_degree\)c                 ó¤   — dgdgg}t        j                  t        |¬«      5  t        di | ¤Žj	                  |«       ddd«       y# 1 sw Y   yxY w)zBTest that we raise errors for invalid input in PolynomialFeatures.r+   r   r-   Nr/   )r1   r2   r3   r   r4   r5   s      r   Ú)test_polynomial_features_input_validationrî   í  sJ   € ð ˆˆqˆcˆ
€Aä	�‰”z¨Ô	1ñ ,ÜÑ$˜VÑ$×(Ñ(¨Ô+÷,÷ ,ñ ,úr9   c                  óÂ   — t        j                  d«      d d …t         j                  f   } t        j                  t        j                  | «      | | dz  | dz  g«      }| |fS )NrŒ   r   rA   )r   r%   ÚnewaxisÚhstackÚ	ones_like)r(   ÚPs     r   Úsingle_feature_degree3rô   þ  sL   € ä
�	‰	�!‹’QœŸ
™
�]Ñ#€AÜ
�	‰	”2—<‘< “? A q¨!¡t¨Q°©TÐ2Ó3€AØˆaˆ4€Kr!   z/degree, include_bias, interaction_only, indices©r   rA   )r   r   rA   ÚX_containerc                 óJ  — | \  }}|� ||«      }t        |||¬«      j                  |«      }|j                  |«      }	|�|	j                  «       }	t	        |	|dd…|f   «       |j
                  dkD  r2|j                  j                  |j
                  |j                  fk(  sJ ‚yy)z9Test PolynomialFeatures on single feature up to degree 3.N©rB   rG   Úinteraction_onlyr   ©	r   r4   rd   rÛ   r   Ún_output_features_Úpowers_re   Ún_features_in_)
rô   rB   rG   rù   Úindicesrö   r(   ró   ÚtfÚouts
             r   Ú$test_polynomial_features_one_featurer    s¨   € ð. "�D€A€qØÐÙ˜‹NˆÜ	Ø LÐCSô
ç	�cˆ!ƒfð ð �,‰,�q‹/€CØÐØ�k‰k‹mˆÜ�C˜š1˜g˜:™Ô'Ø	×Ñ˜qÒ Ø�z‰z×Ñ B×$9Ñ$9¸2×;LÑ;LÐ#MÒMÐMÑMð !r!   c                  óp  — t        j                  d«      j                  d«      } | d d …d d…f   }| d d …dd …f   }t        j                  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  g
«      }| |fS )NrŒ   rì   r+   r   r   rA   )r   r%   r&   rñ   )r(   Úx1Úx2ró   s       r   Útwo_features_degree3r  *  sî   € ä
�	‰	�!‹×Ñ˜VÓ$€AØ	
Š1ˆbˆqˆbˆ5‰€BØ	
Š1ˆa‰bˆ5‰€BÜ
�	‰	à�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰Mð	
ó	€Að ˆaˆ4€Kr!   )r   r+   r   rŽ   )r+   r   rŽ   ©r   r   )r   rA   rŽ   r   )rA   rŽ   r   )r   rA   rŽ   r   rŒ   é   r‹   é	   ©rA   rA   )r   rŒ   r  r‹   r  )rŒ   r  r‹   r  c                 óJ  — | \  }}|� ||«      }t        |||¬«      j                  |«      }|j                  |«      }	|�|	j                  «       }	t	        |	|dd…|f   «       |j
                  dkD  r2|j                  j                  |j
                  |j                  fk(  sJ ‚yy)z5Test PolynomialFeatures on 2 features up to degree 3.Nrø   r   rú   )
r  rB   rG   rù   rþ   rö   r(   ró   rÿ   r   s
             r   Ú%test_polynomial_features_two_featuresr  @  s©   € ðF  �D€A€qØÐÙ˜‹NˆÜ	Ø LÐCSô
ç	�cˆ!ƒfð ð �,‰,�q‹/€CØÐØ�k‰k‹mˆÜ�C˜š1˜g˜:™Ô'Ø	×Ñ˜qÒ Ø�z‰z×Ñ B×$9Ñ$9¸2×;LÑ;LÐ#MÒMÐMÑMð !r!   c                  ó  — t        j                  d«      j                  dd«      } t        dd¬«      j	                  | «      }|j                  «       }t        g d¢|«       t        |«      |j                  | «      j                  d   k(  sJ ‚t        dd	¬«      j	                  | «      }|j                  g d
¢«      }t        g d¢|«       t        |«      |j                  | «      j                  d   k(  sJ ‚t        dd	¬«      j	                  | «      }|j                  g d
¢«      }t        g d¢|«       t        |«      |j                  | «      j                  d   k(  sJ ‚t        ddd¬«      j	                  | «      }|j                  g d
¢«      }t        ddg|«       t        |«      |j                  | «      j                  d   k(  sJ ‚t        dd¬«      j	                  | «      }|j                  g d¢«      }t        g d¢|«       y )Né   r   rA   r   T©rB   rG   )
Ú1Úx0r  r  zx0^2zx0 x1zx0 x2zx1^2zx1 x2zx2^2r+   F)r   rR   Úc)r   rR   r  úa^2úa búa cúb^2úb cúc^2úa^3úa^2 búa^2 cúa b^2úa b cúa c^2úb^3úb^2 cúb c^2úc^3rõ   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r	  rø   r  r  )úF40Dõ   â˜®õ   ×�)r  r"  r#  r$  )
r   r%   r&   r   r4   r[   r   rb   rd   re   )r(   Úpolyr]   s      r   Útest_polynomial_feature_namesr&  q  sÕ  € Ü
�	‰	�"‹×Ñ˜b !Ó$€AÜ Q°TÔ:×>Ñ>¸qÓA€DØ×.Ñ.Ó0€MÜÚRØôô ˆ}Ó §¡°Ó!2×!8Ñ!8¸Ñ!;Ò;Ð;Ð;ä Q°UÔ;×?Ñ?ÀÓB€DØ×.Ñ.ªÓ?€MÜò	
ð* 	ô-ô0 ˆ}Ó §¡°Ó!2×!8Ñ!8¸Ñ!;Ò;Ð;Ð;ä V¸%Ô@×DÑDÀQÓG€DØ×.Ñ.ªÓ?€MÜò	
ð$ 	ô'ô* ˆ}Ó §¡°Ó!2×!8Ñ!8¸Ñ!;Ò;Ð;Ð;äØ D¸4ôç	�cˆ!ƒfð 	ð ×.Ñ.ªÓ?€MÜ˜˜W�~ }Ô5Üˆ}Ó §¡°Ó!2×!8Ñ!8¸Ñ!;Ò;Ð;Ð;ô  Q°TÔ:×>Ñ>¸qÓA€DØ×.Ñ.Ò/QÓR€MÜÒ>ÀÕNr!   )ÚdegrG   rù   ÚdtypeÚcsc_containerc                 óÊ  — t         j                  j                  d«      }|j                  ddd«      } ||«      }t	        | ||¬«      }|j                  |j                  |«      «      }	|j                  |j                  |«      «      }
t        j                  |	«      r|	j                  dk(  sJ ‚|	j                  |
j                  k(  sJ ‚t        |	j                  «       |
«       y )Nr   r   ©rk   r   ©rG   rù   Úcsc©r   r   rË   Úrandintr   r'   Úastyper   rÙ   rÚ   r(  r   rÛ   )r'  rG   rù   r(  r)  rÍ   r(   ÚX_cscr   ÚXt_cscÚXt_denses              r   Útest_polynomial_features_csc_Xr4  ½  s½   € ô" �)‰)×
Ñ
 Ó
"€CØ�‰�A�q˜(Ó#€AÙ˜!Ó€Eä
Ø˜,Ð9Iô€Cð ×Ñ˜uŸ|™|¨EÓ2Ó3€FØ× Ñ  §¡¨%£Ó1€Hä�?‰?˜6Ô" v§}¡}¸Ò'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ò)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r!   Úcsr_containerc                 óÎ  — t         j                  j                  d«      }|j                  ddd«      } ||«      }t	        | ||¬«      }|j                  |j                  |«      «      }	|j                  |j                  |d¬«      «      }
t        j                  |	«      r|	j                  dk(  sJ ‚|	j                  |
j                  k(  sJ ‚t        |	j                  «       |
«       y )Nr   r   r+  r,  F)ÚcopyrØ   r.  )r'  rG   rù   r(  r5  rÍ   r(   ÚX_csrr   ÚXt_csrr3  s              r   Útest_polynomial_features_csr_Xr:  Ý  sÂ   € ô �)‰)×
Ñ
 Ó
"€CØ�‰�A�q˜(Ó#€AÙ˜!Ó€Eä
Ø˜,Ð9Iô€Cð ×Ñ˜uŸ|™|¨EÓ2Ó3€FØ× Ñ  §¡¨%°e Ó!<Ó=€Hä�?‰?˜6Ô" v§}¡}¸Ò'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ò)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r!   Ú
n_features)r+   rŽ   r   zmin_degree, max_degree))r   r+   )r   r   )r+   rA   )r   rŽ   )rA   rŽ   rù   c                 óø   —  |dgdg| dz
  gff«      }t        |||¬«      }|j                  |«       |j                  }t        j                  | d|||¬«      }	|t	        |	D �
cg c]  }
d‘Œ c}
«      k(  sJ ‚yc c}
w )z?
    Test that n_output_features_ is calculated correctly.
    r+   r   )rB   rù   rG   ©r;  Ú
min_degreeÚ
max_degreerù   rG   N)r   r4   rû   Ú_combinationsrp   )r;  r>  r?  rù   rG   r5  r—   r   Ú
num_combosÚcombosrC   s              r   Útest_num_combinationsrC  û  s�   € ñ 	˜�s˜a˜S :°¡>Ð"2Ð3Ð4Ó5€AÜ
ØØ)Ø!ô€Cð
 ‡G�GˆA„JØ×'Ñ'€Jä×-Ñ-ØØØØ)Ø!ô€Fð œ¨Ö0 AšaÒ0Ó1Ò1Ð1Ñ1ùÒ0s   Á"	A7
c                 ó   —  |t        dddd¬«      «      }|j                  «       }t        | ||¬«      }|j                  |j	                  |«      «      }|j                  |j	                  |«      «      }	t        j                  |«      r|j                  dk(  sJ ‚|j                  |	j                  k(  sJ ‚t        |j                  «       |	«       y )Néè  r   ç      à?r   ©Úrandom_stater,  rØ   )
Úsparse_randomrÛ   r   r'   r0  r   rÙ   rÚ   r(  r   )
r'  rG   rù   r(  r5  r8  r(   r   r9  r3  s
             r   Ú%test_polynomial_features_csr_X_floatsrJ    s­   € ñ œ-¨¨b°#ÀAÔFÓG€EØ�‰‹€Aä
Ø˜,Ð9Iô€Cð ×Ñ˜uŸ|™|¨EÓ2Ó3€FØ× Ñ  §¡¨%£Ó1€Hä�?‰?˜6Ô" v§}¡}¸Ò'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ò)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r!   )Úzero_row_indexr'  rù   ))r   r   T)r+   r   T©r   r   T)r   rA   T)r+   rA   T)r   rA   T)r   r   F)r+   r   F©r   r   F)r   rA   F)r+   rA   F)r   rA   Fc                 óv  —  |t        dddd¬«      «      }d|| d d …f<   |j                  «       }t        |d|¬«      }|j                  |«      }|j                  |«      }t	        j
                  |«      r|j                  d	k(  sJ ‚|j                  |j                  k(  sJ ‚t        |j                  «       |«       y )
NrA   r   r£   r   rG  r¢   Fr,  rØ   ©	rI  rÛ   r   r'   r   rÙ   rÚ   r(  r   )	rK  r'  rù   r5  r8  r(   r   r9  r3  s	            r   Ú'test_polynomial_features_csr_X_zero_rowrP  6  s¦   € ñ* œ-¨¨2¨sÀÔCÓD€EØ"€Eˆ.š!Ð
ÑØ�‰‹€Aä
˜S¨uÐGWÔ
X€CØ×Ñ˜uÓ%€FØ× Ñ  Ó#€Hä�?‰?˜6Ô" v§}¡}¸Ò'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ò)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r!   ))TTrv   rw   )FFc                 ód  —  |t        dddd¬«      «      }|j                  «       }t        d| |¬«      }|j                  |«      }|j                  |«      }t	        j
                  |«      r|j                  dk(  sJ ‚|j                  |j                  k(  sJ ‚t        |j                  «       |«       y )	NrE  r   rF  r   rG  rŽ   r,  rØ   rO  )rG   rù   r5  r8  r(   r   r9  r3  s           r   Ú'test_polynomial_features_csr_X_degree_4rR  Z  sœ   € ñ œ-¨¨b°#ÀAÔFÓG€EØ�‰‹€Aä
Ø	˜Ð7Gô€Cð ×Ñ˜uÓ%€FØ× Ñ  Ó#€Hä�?‰?˜6Ô" v§}¡}¸Ò'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ò)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r!   )r'  Údimrù   )
)r   r+   TrL  )rA   r+   T)rA   r   T)rA   rA   T)r   r+   FrM  )rA   r+   F)rA   r   F)rA   rA   Fc                 ób  —  |t        d|dd¬«      «      }|j                  «       }t        | |¬«      }|j                  |«      }|j                  |«      }t	        j
                  |«      r|j                  dk(  sJ ‚|j                  |j                  k(  sJ ‚t        |j                  «       |«       y )NrE  rF  r   rG  )rù   rØ   rO  )	r'  rS  rù   r5  r8  r(   r   r9  r3  s	            r   Ú(test_polynomial_features_csr_X_dim_edgesrU  p  s•   € ñ" œ-¨¨c°3ÀQÔGÓH€EØ�‰‹€Aä
˜SÐ3CÔ
D€CØ×Ñ˜uÓ%€FØ× Ñ  Ó#€Hä�?‰?˜6Ô" v§}¡}¸Ò'=Ð=Ð=Ø�<‰<˜8Ÿ>™>Ò)Ð)Ð)Ü˜fŸn™nÓ.°Õ9r!   c           
      óZ  ‡ — ˆ fd„}d}d}t         j                  }t        j                  ddt         j                  ¬«      }t        j                  |dz
  |dz
  |dz
  |dz
  g«      }t        j                  |dz
  |dz
  |dz
  |dz
  gt         j                  ¬«      }	 ||||	ff||f|¬«      }
t        ‰ |d¬	«      }|j                  |d
d|j                  |j                  ¬«      }|t        j                  t         j                  «      j                  kD  r8d}t        j                  t        |¬«      5  |j                  |
«       ddd«       y|j!                  |
«      }|j#                  «       \  }}||z   } |||	t%        ‰  «         |	d   «      |z   }|r	dg|dz
  z  ng }|r	d
g|dz
  z  ng }t'        d«      D �]  }|d|z     }|d|z  dz      }|	d|z     }|	d|z  dz      }|r"|j)                  d«       |j)                  d
«       |j+                  ||g«       |j+                  |t%        |«      z   |t%        |«      z   g«       ‰ sS|j+                  ||z  ||z  ||z  g«       |j+                   ||||«      |z    ||||«      |z    ||||«      |z   g«       Œá|j+                  ||z  g«       |j)                   ||||«      |z   «       �Œ t%        |«      dz   dt%        ‰  «      z  z   }|j,                  |dz   k(  sJ ‚|j.                  |k(  sJ ‚|j0                  ||dz   fk(  sJ ‚|j2                  j.                  |j4                  j.                  cxk(  rt         j                  k(  sJ ‚ J ‚|j4                  j                  «       t        j                  t         j6                  «      j                  kD  sJ ‚|rt9        t'        |dz
  «      «      ng }|j+                  |dz
  g|z  |dz
  g|z  z   «       t;        |j<                  |«       t?        ||«       t?        ||«       y# 1 sw Y   yxY w)a°  Check the automatic index dtype promotion to `np.int64` when needed.

    This ensures that sufficiently large input configurations get
    properly promoted to use `np.int64` for index and indptr representation
    while preserving data integrity. Non-regression test for gh-16803.

    Note that this is only possible for Python runtimes with a 64 bit address
    space. On 32 bit platforms, a `ValueError` is raised instead.
    c                 ód   •— ‰r| |z  |dz  d|z  z   dz  z
  dz
  |z   S | |z  |dz  |z   dz  z
  |z   S )Nr   rA   r+   r/   )r¿   ÚiÚjrù   s      €r   Údegree_2_calczRtest_csr_polynomial_expansion_index_overflow_non_regression.<locals>.degree_2_calc�  sP   ø€ ÙØ�q‘5˜A˜q™D 1 q¡5™L¨QÑ.Ñ.°Ñ2°QÑ6Ð6à�q‘5˜A˜q™D 1™H¨™?Ñ*¨QÑ.Ð.r!   é   iÁÔ r+   r   ©r(  r   )re   r(  ©rù   rG   rB   r   r=  útThe output that would result from the current configuration would have \d* features which is too large to be indexedr-   NrA   ) r   Úfloat32r%   Úint64r�   r   Ú_num_combinationsrù   rG   ÚiinfoÚintpr·   r1   r2   r3   r4   r'   ÚnonzeroÚintr¹   ÚappendÚextendrû   r(  re   Úindptrrþ   Úint32Úlistr   Údatar   )rù   rG   r5  rZ  Ú	n_samplesr;  Ú
data_dtyperk  ÚrowÚcolr(   ÚpfÚnum_combinationsrÅ   rf   Úrow_nonzeroÚcol_nonzeroÚn_degree_1_features_outÚmax_degree_2_idxÚdata_targetÚcol_nonzero_targetrX  r—   r†   Úx_idxÚy_idxÚnnz_per_rowÚrow_nonzero_targets   `                           r   Ú;test_csr_polynomial_expansion_index_overflow_non_regressionr|  �  sV  ø€ ô /ð €IØ€JÜ—‘€JÜ�9‰9�Q˜¤§¡Ô*€DÜ
�(‰(�I ‘M 9¨q¡=°)¸a±-ÀÈQÁÐOÓ
P€Cô �(‰(Ø	�a‰˜ a™¨°a©¸Àa¹ÐHÔPR×PXÑPXô€Cñ 	Ø	��SˆzÐØ˜*Ð%Øô	€Aô
 
Ø)¸ÈQô
€Bð ×+Ñ+ØØØØ×,Ñ,Ø—_‘_ð ,ó Ðð œ"Ÿ(™(¤2§7¡7Ó+×/Ñ/Ò/ð>ð 	ô �]‰]œ:¨SÔ1ñ 	Ø�F‰F�1ŒI÷	àØ×Ñ˜qÓ!€GØ&Ÿ™Ó0Ñ€K�Ø(¨<Ñ7Ðá�j #¤cÐ.>Ð*>Ó&?Ñ"@À#ÀaÁ&ÓIØ
!ñ	"ð ñ ,8�1�#˜ Q™Ò'¸R€KÙ2>˜!˜ 	¨A¡Ò.ÀBÐä�1‹Xó ˆØ��Q‘‰KˆØ��Q‘˜‘‰OˆØ�A˜‘E‘
ˆØ�A˜‘E˜A‘I‘ˆÙØ×Ñ˜qÔ!Ø×%Ñ% aÔ(Ø×Ñ˜A˜q˜6Ô"Ø×!Ñ!Ø”S˜Ó&Ñ&¨´°LÓ0AÑ(AÐBô	
ñ  Ø×Ñ  A¡ q¨1¡u¨a°!©eÐ4Ô5Ø×%Ñ%á! *¨e°UÓ;Ð>UÑUÙ! *¨e°UÓ;Ð>UÑUÙ! *¨e°UÓ;Ð>UÑUðõð ×Ñ  A¡˜wÔ'Ø×%Ñ%Ù˜j¨%°Ó7Ð:QÑQöð/ô6 �lÓ# aÑ'¨!¬cÐ6FÐ2FÓ.GÑ*GÑG€Kà× Ñ Ð$4°qÑ$8Ò8Ð8Ð8Ø�=‰=˜JÒ&Ð&Ð&Ø�=‰=˜YÐ(8¸1Ñ(<Ð=Ò=Ð=Ð=Ø�>‰>×Ñ 7§?¡?×#8Ñ#8ÔD¼B¿H¹HÒDÐDÑDÐDÐDà�?‰?×ÑÓ ¤2§8¡8¬B¯H©HÓ#5×#9Ñ#9Ò9Ð9Ð9á7Cœœe I°¡MÓ2Ô3ÈÐØ×ÑØ	�Q‰ˆ˜+Ñ%¨°Q©¨¸+Ñ(EÑEôô �G—L‘L +Ô.Ü�{Ð$6Ô7Ü�{Ð$6Õ7÷w	àús   Ä1P!Ð!P*zdegree, n_features)r   éÿÿ  )rA   i(	  )rA   r}  c                 óÚ  — dg}|dz
  t        j                  t         j                  «      j                  k  rt         j                  nt         j                  }t        j
                  dg|¬«      }t        j
                  |dz
  g|¬«      }|dz
  t        |«      z   g}	|	j                  ||dz   z  dz  |	d   z   «       |	j                  ||dz   z  |dz   z  dz  |	d   z   «        ||||ff«      }
t        ||| ¬«      }|j                  |d| |j                  |j                  ¬«      }|t        j                  t         j                  «      j                  kD  r8d	}t        j                  t        |¬
«      5  |j!                  |
«       ddd«       yt"        t%        d«      k  rÍd}t        j                  t         j                  «      j                  }||z   }t'        d| dz   «      D ]M  }t)        |
j*                  ||«      }t-        |||«      dz
  }||dz   z  }t        ||«      |kD  }|| xr ||kD  z  }ŒO |r8d}t        j                  t        |¬
«      5  |j/                  |
«      }ddd«       yt"        t%        d«      k  rD|dk(  r?| dk(  r:|s8d}t        j                  t        |¬
«      5  |j/                  |
«      }ddd«       y|j/                  |
«      }|t        j                  t         j                  «      j                  kD  rt         j                  nt         j                  }d| dz
  t        | «      z  z   }t        |«      |z   }|j0                  |
j0                  k(  sJ ‚|j2                  d|j4                  fk(  sJ ‚|j*                  j0                  |j6                  j0                  cxk(  r|k(  sJ ‚ J ‚|j8                  |k(  sJ ‚|r|d   t        j:                  d«      k(  sJ ‚t'        |«      D ]$  }|d|	|   f   t        j:                  d«      k(  rŒ$J ‚ ||z  }| dk(  r|d|z   z  }|j4                  |	| dz
     dz   |z
  k(  sJ ‚y# 1 sw Y   yxY w# 1 sw Y   yxY w# 1 sw Y   yxY w)zšTests known edge-cases to the dtype promotion strategy and custom
    Cython code, including a current bug in the upstream
    `scipy.sparse.hstack`.
    r£   r+   r   r\  r   rŒ   r]  r=  r^  r-   NrÒ   Fz>In scipy versions `<1.8.0`, the function `scipy.sparse.hstack`z1.9.2r}  z>In scipy versions `<1.9.2`, the function `scipy.sparse.hstack`©r   r   rA   )r   rb  ri  r·   r`  r�   re  rf  r   ra  rù   rG   rc  r1   r2   r3   r4   r   r   r¹   r   rh  r   r'   r(  re   rû   rþ   ÚnnzÚapprox)rB   r;  rù   rG   r5  rk  Úindices_dtypern  ro  Úexpected_indicesr(   rp  rq  rÅ   Úhas_bugÚ	max_int32Úcumulative_sizer'  Ú
max_indptrÚmax_indicesÚneeds_int64rf   Úexpected_dtypeÚnon_bias_termsÚexpected_nnzÚidxÚoffsets                              r   Ú,test_csr_polynomial_expansion_index_overflowr�    sN  € ð4 ˆ5€Dà *¨Q¡´"·(±(¼2¿8¹8Ó2D×2HÑ2HÒ H”B—H’HÌbÏhÉh€MÜ
�(‰(�A�3˜mÔ
,€CÜ
�(‰(�J ‘NÐ#¨=Ô
9€Cð 	�Q‰œ˜\Ó*Ñ*ðÐð ×Ñ˜J¨*°q©.Ñ9¸QÑ>ÐAQÐRSÑATÑTÔUà×ÑØ�j 1‘nÑ%¨°a©Ñ8¸AÑ=Ð@PÐQRÑ@SÑSôñ 	�t˜c 3˜ZÐ(Ó)€AÜ	Ø)¸ÈVô
€Bð ×+Ñ+ØØØØ×,Ñ,Ø—_‘_ð ,ó Ðð œ"Ÿ(™(¤2§7¡7Ó+×/Ñ/Ò/ð>ð 	ô �]‰]œ:¨SÔ1ñ 	Ø�F‰F�1ŒI÷	àô
 ”M 'Ó*Ò*ØˆÜ—H‘HœRŸX™XÓ&×*Ñ*ˆ	Ø$ |Ñ3ˆÜ˜˜F Q™JÓ'ò 	GˆCÜ(¨¯©Ð3CÀSÓIˆJÜ,¨ZÐ9IÈ3ÓOÐRSÑSˆKØ˜{¨Q™Ñ.ˆOÜ˜k¨:Ó6¸ÑBˆKØ˜;�ÒF¨?¸YÑ+FÑF‰Gð	Gñ ØSˆCÜ—‘œz°Ô5ñ .Ø×*Ñ*¨1Ó-�÷.àô 	”] 7Ó+Ò+Ø˜%ÒØ�aŠKÙ àOˆÜ�]‰]œ:¨SÔ1ñ 	*Ø×&Ñ& qÓ)ˆG÷	*àØ×Ñ˜qÓ!€Gà!1´B·H±H¼R¿X¹XÓ4F×4JÑ4JÒ!J”R—X’XÔPR×PXÑPX€Nà˜& 1™*¬Ð0@Ð,@Ó(AÑAÑA€NÜ�|Ó$ ~Ñ5€LØ�=‰=˜AŸG™GÒ#Ð#Ð#Ø�=‰=˜Q × 5Ñ 5Ð6Ò6Ð6Ð6Ø�>‰>×Ñ 7§?¡?×#8Ñ#8ÔJ¸NÒJÐJÑJÐJÐJØ�;‰;˜,Ò&Ð&Ð&áØ�t‰}¤§¡¨cÓ 2Ò2Ð2Ð2Ü�^Ó$ò GˆØ�qÐ*¨3Ñ/Ð/Ñ0´F·M±MÀ#Ó4FÓFÐFÐFðGð  
Ñ*€FØ�‚{Ø�!�j‘.Ñ ˆØ× Ñ Ð$4°V¸a±ZÑ$@À1Ñ$DÀvÑ$MÒMÐMÑM÷s	àú÷".àú÷	*àús$   Å3Q	ÉQÊ(Q!Ñ	QÑQÑ!Q*c                 ó¸  — t        j                  t         j                  «      j                  dz  }dg}dg}|dz
  g} ||||ff«      }t	        | |d¬«      }d}	t        j                  t        |	¬«      5  |j                  |«       d d d «       t        j                  t        |	¬«      5  |j                  |«       d d d «       y # 1 sw Y   Œ?xY w# 1 sw Y   y xY w)	Nr   r£   r   r+   r  r]  r^  r-   )
r   rb  r`  r·   r   r1   r2   r3   r4   r'   )
rù   rG   r5  r;  rk  rn  ro  r(   rp  rÅ   s
             r   Ú0test_csr_polynomial_expansion_too_large_to_indexr‘  |  sÏ   € ô —‘œ"Ÿ(™(Ó#×'Ñ'¨1Ñ,€JØˆ5€DØˆ#€CØ˜‰>Ð
€CÙ�t˜c 3˜ZÐ(Ó)€AÜ	Ø)¸ÈVô
€Bð	6ð ô 
�‰”z¨Ô	-ñ Ø
�‰ˆqŒ	÷ä	�‰”z¨Ô	-ñ Ø
×Ñ˜Ô÷ð ÷ð ú÷ð ús   Á4CÂ)CÃCÃCÚsparse_containerc                 ón  — t        j                  d«      }t        dd¬«      }d}t        j                  t
        |¬«      5  |j                  |«       ddd«       t        dd¬«      }d	}t        j                  t
        |¬«      5  |j                  |«       ddd«       | | |«      fD ]s  }t        dd
¬«      }|j                  |«      }t        j                  |«      r|j                  «       }t        |t        j                  |j                  d   df«      «       Œu y# 1 sw Y   ŒÎxY w# 1 sw Y   Œ–xY w)z”Check that PolynomialFeatures raises error when degree=0 and include_bias=False,
    and output a single constant column when include_bias=True
    )r   r   r   Fr  zWSetting degree to zero and include_bias to False would result in an empty output array.r-   Nr  zoSetting both min_degree and max_degree to zero and include_bias to False would result in an empty output array.Tr+   )r   Úonesr   r1   r2   r3   r'   r   rÙ   rÛ   r   re   )r’  r(   r%  r7   Ú_XÚoutputs         r   Ú1test_polynomial_features_behaviour_on_zero_degreer—  ”  s  € ô
 	�‰�Ó€AÜ Q°UÔ;€Dð	"ð ô 
�‰”z¨Ô	1ñ Ø×Ñ˜1Ô÷ô  V¸%Ô@€Dð	8ð ô 
�‰”z¨Ô	1ñ Ø×Ñ˜1Ô÷ð Ñ" 1Ó%Ð&ò =ˆÜ!¨¸Ô>ˆØ×#Ñ# BÓ'ˆä�?‰?˜6Ô"Ø—^‘^Ó%ˆFÜ˜6¤2§7¡7¨A¯G©G°A©J¸¨?Ó#;Õ<ñ=÷ð ú÷ð ús   Á DÂD+ÄD(Ä+D4c                  óž   — t         j                  dk(  s&t         j                  dk  rt         j                  dk7  rd} nd} t        «       | k(  sJ ‚y )NÚwin32ì        Ú
emscriptenr‹   é   )ÚsysÚplatformÚmaxsizer   )Úexpected_sizes    r   Útest_sizeof_LARGEST_INT_tr¡  ³  sB   € ô ‡|�|�wÒÜ�‰�uÒ¤§¡°Ò!=à‰àˆä$Ó&¨-Ò7Ð7Ñ7r!   r™  zyOn Windows, scikit-learn is typically compiled with MSVC that does not support int128 arithmetic (at the time of writing))rÔ   Úrunc                 ó¸  — t        t        j                  t        j                  «      j                  dz  dz   «      }dg}dg}|dz
  g}|dz
  g}|j                  t        ||dz   z  dz  |d   z   «      «       |j                  t        ||dz   z  |dz   z  dz  |d   z   «      «        | |||ff«      }t        ddd¬	«      }t        j                  d
k  r8d}t        j                  t        |¬«      5  |j                  |«       d d d «       y |j                  |«      }	t        d«      D ]$  }
|	d||
   f   t        j                  d«      k(  rŒ$J ‚ y # 1 sw Y   y xY w)NgUUUUUUÕ?rA   r£   r   r+   r   rŒ   Fr]  rš  r^  r-   )re  r   rb  r`  r·   rf  r   r�  rŸ  r1   r2   r3   r'   r¹   r�  )r5  r;  rk  rn  ro  rƒ  r(   rp  rÅ   rf   r�  s              r   Ú*test_csr_polynomial_expansion_windows_failr¤  Á  s�  € ô ”R—X‘XœbŸh™hÓ'×+Ñ+°Ñ6¸Ñ:Ó;€JØˆ5€DØˆ#€CØ˜‰>Ð
€Cð 	�Q‰ðÐð ×ÑÜˆJ˜* q™.Ñ)¨QÑ.Ð1AÀ!Ñ1DÑDÓEôð ×ÑÜˆJ˜* q™.Ñ)¨Z¸!©^Ñ<ÀÑAÐDTÐUVÑDWÑWÓXôñ 	�t˜c 3˜ZÐ(Ó)€AÜ	¨UÀÈqÔ	Q€BÜ
‡{�{�eÒð:ð 	ô
 �]‰]œ:¨SÔ1ñ 	 Ø×Ñ˜QÔ÷	 ð 	 ð ×"Ñ" 1Ó%ˆÜ˜“8ò 	KˆCØ˜1Ð.¨sÑ3Ð3Ñ4¼¿¹ÀcÓ8JÓJÐJÐJñ	K÷		 ð 	 ús   Ã1EÅE)Ur�  Únumpyr   r1   Únumpy.testingr   r   Úscipyr   Úscipy.interpolater   Úscipy.sparser   rI  Úsklearn.linear_modelr   Úsklearn.pipeliner	   Úsklearn.preprocessingr
   r   r   Ú/sklearn.preprocessing._csr_polynomial_expansionr   r   r   Úsklearn.utils._testingr   Úsklearn.utils.fixesr   r   r   r   ÚmarkÚparametrizer)   r8   rD   r^   rg   r¹   rs   rˆ   r�   r“   rŸ   r«   rµ   rÀ   rÆ   rÑ   Úskipifræ   rè   rë   rî   Úfixturerô   Úslicer  r  r  r&  re  r_  Úfloat64r4  r:  rC  rJ  rP  rR  rU  r|  Úsqrtrb  r`  r·   r�  r‘  r—  r¡  Úxfailrž  r¤  r/   r!   r   ú<module>r¸     sî  ðÛ 
ã Û ß =Ý Ý %Ý 0å 1Ý %÷ñ ÷
ñ õ
 =÷ó ð ‡�×Ñ˜Ð!3Ð5FÐ GÓHñ	9ó Ið	9ð ‡�×ÑØà
�Q�C�5Ð	ÐNÐOØ
�Q˜�F˜Q ˜FÐ#Ð	$Ð&SÐTØ
�Q�C˜!˜�:Ð	Ð JÐKðóñ+óð+ð ‡�×Ñ˜¨:°zÐ*BÓCñó Dðò#ðL ‡�×ÑØÚ2óð ‡�×Ñ˜ A q 6Ó*ñ2ó +ó	ð
2ð ‡�×Ñ˜¡5¨¨A£;Ó/Ø‡�×Ñ˜¡E¨!¨Q£KÓ0Ø‡�×Ñ˜ 9¨jÐ"9Ó:Ø‡�×Ñ˜¨:°zÐ*BÓCñ>ó Dó ;ó 1ó 0ð>ð2 ‡�×Ñ˜& +Ð.°ÀÐ0NÓOñ3ó Pð3ð, ‡�×ÑÚ;à	�A�t˜X˜RŸX™X¨¨1 v°°1¨v¸¸2°wÐ&?Ó@ÐAàØØˆB�H‰HÒ*Ó+ØˆB�H‰H�q˜!�f˜q !˜f q¨" gÐ.Ó/ð		
ð 
�A�t˜X˜RŸX™X¨¨1 v°°1¨v¸¸2°wÀÀBÀÐ&HÓIÐJØ	�Q˜˜h˜bŸh™h¨¨A¨°°A°¸¸B¸Ð'@ÓAÐBàØØˆB�H‰HÒ*Ó+ØˆB�H‰H�q˜!�f˜q !˜f q¨" gÐ.Ó/ð		
ðóñ(0ó)ð(0ð ‡�×Ñ˜& +Ð.°ÀÐ0NÓOñIó PðIò>ò$4ð, ‡�×Ñ˜ A q 6Ó*ñ#"ó +ð#"ðL ‡�×Ñ˜& +Ð.°ÀÐ0NÓOØ‡�×Ñ˜¢?Ó3ñ3ó 4ó Pð3òl0ð( ‡�×ÑØ‘˜wÓ'Ñ'ØFð ó ð ‡�×Ñ˜¡5¨¨A£;Ó/Ø‡�×Ñ˜ 9¨jÐ"9Ó:Ø‡�×ÑØÒLóð ‡�×Ñ˜¨%°¨Ó7ñ-
ó 8óó ;ó 0ó	ð-
ð` ‡�×ÑØ‘- Ó(Ñ(ØFð ó ñ5ó	ð5ð ‡�×Ñ˜ Q¨ GÓ,Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜ A q 6Ó*Ø‡�×ÑØÒLóð ‡�×Ñ˜¨5°$¨-Ó8ñ>ó 9óó +ó 8ó -ð>ð( ‡�×ÑØà
�GÐ	ÐGÐHØ
�HÐ	ÐHÐIØ
�FÐ	ÐFÐGØ
�IÐ	Ð JÐKð	óñ,óð,ð €‡�Óñó ðð ‡�×ÑØ5à	
ˆD�%™˜t TÓ*Ð+Ø	
ˆE�5™%  4›.Ð)Ø	
ˆD�$˜˜A˜ÐØ	
ˆE�4˜!˜ÐØ	��ušiÐ(Ø	�˜  1˜vÐ&Ø	��t˜a˜SÐ!Ø	�˜˜bÐ!ð	óð ‡�×Ñ˜¨¨°Ñ(?À.Ñ(PÓQñNó RóðNð. €‡�Óñó ðð* ‡�×ÑØ5à	
ˆD�%™˜q !›Ð%Ø	
ˆE�5™%  1›+Ð&Ø	
ˆD�$šÐ%Ø	
ˆE�4šÐ#Ø	��ušlÐ+Ø	�˜šyÐ)Ø	��t˜a ˜VÐ$Ø	�˜˜q˜cÐ"Ø	
ˆD�%™˜t TÓ*Ð+Ø	
ˆE�5™%  4›.Ð)Ø	
ˆD�$šÐ%Ø	
ˆE�4šÐ#Ø	��uÒ6Ð7Ø	�˜™u Q¨›~Ð.Ø	��t˜a ˜VÐ$Ø	�˜˜q˜cÐ"Ø	��ušoÐ.Ø	�˜š|Ð,Ø	��t˜a˜SÐ!Ø	�˜˜bÐ!ð)óð2 ‡�×Ñ˜¨¨°Ñ(?À.Ñ(PÓQñNó Ró3ð4Nò.IOðX ‡�×ÑÚ8à	
ˆD�%˜ÐØ	
ˆD�%˜ÐØ	
ˆD�%˜Ÿ™Ð$Ø	
ˆD�%˜Ÿ™Ð$Ø	
ˆE�5˜"Ÿ*™*Ð%Ø	
ˆE�4˜Ÿ™Ð$Ø	
ˆE�5˜"Ÿ*™*Ð%Ø	
ˆE�4˜Ÿ™Ð$ð	óð ‡�×Ñ˜¨.Ó9ñ:ó :óð:ð$ ‡�×ÑÚ8à	
ˆD�%˜ÐØ	
ˆD�%˜ÐØ	
ˆD�%˜Ÿ™Ð$Ø	
ˆD�%˜Ÿ™Ð$Ø	
ˆE�5˜"Ÿ*™*Ð%Ø	
ˆE�4˜Ÿ™Ð$ðó
ð ‡�×Ñ˜¨.Ó9ñ:ó :ó
ð:ð$ ‡�×Ñ˜¢yÓ1Ø‡�×ÑØÒFóð ‡�×ÑÐ+¨d°E¨]Ó;Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜¨.Ó9ñ2ó :ó 8ó <óó 2ð2ð2 ‡�×ÑÚ8à	
ˆD�%˜Ÿ™Ð$Ø	
ˆD�%˜Ÿ™Ð$Ø	
ˆE�5˜"Ÿ*™*Ð%Ø	
ˆE�4˜Ÿ™Ð$ð	óð ‡�×Ñ˜¨.Ó9ñ:ó :óð:ð" ‡�×ÑÚ1òóð" ‡�×Ñ˜¨.Ó9ñ:ó :ó#ð$:ð$ ‡�×ÑØÐ'Ð(Ú@óð ‡�×Ñ˜¨.Ó9ñ:ó :ó	ð
:ð" ‡�×ÑÚ&òóð ‡�×Ñ˜¨.Ó9ñ
:ó :óð 
:ð ‡�×ÑÐ+¨d°E¨]Ó;Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜¨.Ó9ño8ó :ó 8ó <ðo8ðd ‡�×ÑØð 	Øð 
‰C��—‘˜˜Ÿ™ §¡Ó*×.Ñ.Ó/°!Ñ3Ó4Ð5Øð 
‰C��—‘˜˜Ÿ™ §¡Ó*×.Ñ.Ó/Ó0Ð1ðóð  ‡�×ÑÐ+¨d°E¨]Ó;Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜¨.Ó9ñdNó :ó 8ó <ó!ð&dNðN ‡�×ÑÐ+¨d°E¨]Ó;Ø‡�×Ñ˜¨$°¨Ó7Ø‡�×Ñ˜¨.Ó9ñó :ó 8ó <ðð* ‡�×ÑÐ+¨^¸nÑ-LÓMñ=ó Nð=ò<8ð ‡�×ÑØ‡L�L�GÑð	6ð 	ð ó ð ‡�×Ñ˜¨.Ó9ñ"Kó :óñ"Kr!   