ó
    ¦ñ:i{,  ã                   óÈ   • S SK Jr  S SKJr  S SKJr  S SKrSSKJ	r	  SSS.S	 jr
SS
 jr " S S\5      rS r " S S\5      rS rS rSS.S jrSS jr " S S\5      rS rg)é    )ÚCounter)Úsuppress)Ú
NamedTupleNé   )Úis_scalar_nanF©Úreturn_inverseÚreturn_countsc                óR   • U R                   [        :X  a
  [        XUS9$ [        XUS9$ )a)  Helper function to find unique values with support for python objects.

Uses pure python method for object dtype, and numpy method for
all other dtypes.

Parameters
----------
values : ndarray
    Values to check for unknowns.

return_inverse : bool, default=False
    If True, also return the indices of the unique values.

return_counts : bool, default=False
    If True, also return the number of times each unique item appears in
    values.

Returns
-------
unique : ndarray
    The sorted unique values.

unique_inverse : ndarray
    The indices to reconstruct the original array from the unique array.
    Only provided if `return_inverse` is True.

unique_counts : ndarray
    The number of times each of the unique values comes up in the original
    array. Only provided if `return_counts` is True.
r   )ÚdtypeÚobjectÚ_unique_pythonÚ
_unique_np)Úvaluesr	   r
   s      ÚX/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/sklearn/utils/_encode.pyÚ_uniquer   
   s6   € ð> ‡|�|”vÓÜØÀñ
ð 	
ô Ø¸]ñð ó    c                 óö  • [         R                  " XUS9nSu  pEU(       a  UGt p5U(       a  UGt p4U(       d  U(       a  US   nUR                  (       av  [        US   5      (       ac  [         R                  " U[         R
                  5      nUSUS-    nU(       a  XdXF:„  '   U(       a"  [         R                  " XVS 5      XV'   USUS-    nU4nU(       a  Xt4-  nU(       a  Xu4-  n[        U5      S:X  a  US   $ U$ )z�Helper function to find unique values for numpy arrays that correctly
accounts for nans. See `_unique` documentation for details.r   )NNr   éÿÿÿÿNr   )ÚnpÚuniqueÚsizer   ÚsearchsortedÚnanÚsumÚlen)r   r	   r
   ÚuniquesÚinverseÚcountsÚnan_idxÚrets           r   r   r   3   sï   € ô �iŠiØ¸]ñ€Gð !�O€GæØ"ÑˆæØ#ÑˆæžØ˜!‘*ˆð ‡|‡|œ g¨b¡k×2Ñ2Ü—/’/ '¬2¯6©6Ó2ˆØ˜-˜G a™KÐ(ˆÞØ)0�GÑ%Ñ&æÜ Ÿfšf V¨HÐ%5Ó6ˆF‰OØ˜M˜g¨™kÐ*ˆFàˆ*€CæØˆzÑˆæØˆyÑˆä˜“X “]ˆ3ˆq‰6Ð+¨Ð+r   c                   ó4   • \ rS rSr% Sr\\S'   \\S'   S rSrg)ÚMissingValuesé\   z'Data class for missing data informationr   Únonec                 ó®   • / nU R                   (       a  UR                  S5        U R                  (       a  UR                  [        R                  5        U$ )z3Convert tuple to a list where None is always first.N)r%   Úappendr   r   )ÚselfÚoutputs     r   Úto_listÚMissingValues.to_listb   s6   € àˆØ�9�9Ø�M‰M˜$ÔØ�8�8Ø�M‰Mœ"Ÿ&™&Ô!Øˆr   © N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚboolÚ__annotations__r*   Ú__static_attributes__r,   r   r   r#   r#   \   s   ‡ Ù1à	ƒIØ
ƒJõr   r#   c                 óö   • U  Vs1 s H  ob  [        U5      (       d  M  UiM     nnU(       d  U [        SSS94$ SU;   a%  [        U5      S:X  a  [        SSS9nO[        SSS9nO
[        SSS9nX-
  nXC4$ s  snf )a  Extract missing values from `values`.

Parameters
----------
values: set
    Set of values to extract missing from.

Returns
-------
output: set
    Set with missing values extracted.

missing_values: MissingValues
    Object with missing value information.
NF)r   r%   r   T)r   r#   r   )r   ÚvalueÚmissing_values_setÚoutput_missing_valuesr)   s        r   Ú_extract_missingr9   l   s˜   € ñ" "óÚ!�%¡]´mÀE×6J�™6ð ð ö Ø”}¨°UÑ;Ð;Ð;àÐ!Ó!ÜÐ!Ó" aÓ'Ü$1°eÀ$Ñ$GÑ!ô %2°dÀÑ$FÑ!ä -°$¸UÑ CÐð Ñ(€FØÐ(Ð(ùò's
   …A6ŸA6c                   ó2   ^ • \ rS rSrSrU 4S jrS rSrU =r$ )Ú_nandicté’   z!Dictionary with support for nans.c                 ó†   >• [         TU ]  U5        UR                  5        H  u  p#[        U5      (       d  M  X0l          g    g ©N)ÚsuperÚ__init__Úitemsr   Ú	nan_value)r(   ÚmappingÚkeyr6   Ú	__class__s       €r   r@   Ú_nandict.__init__•   s5   ø€ Ü‰Ñ˜Ô!Ø!Ÿ-™-ž/‰JˆCÜ˜S×!Ó!Ø!&”Ùò *r   c                 ór   • [        U S5      (       a  [        U5      (       a  U R                  $ [        U5      e)NrB   )Úhasattrr   rB   ÚKeyError©r(   rD   s     r   Ú__missing__Ú_nandict.__missing__œ   ó-   € Ü�4˜×%Ñ%¬-¸×*<Ñ*<Ø—>‘>Ð!Ü�s‹mÐr   )rB   )	r-   r.   r/   r0   r1   r@   rK   r4   Ú__classcell__©rE   s   @r   r;   r;   ’   s   ø† Ù+õ÷ð r   r;   c                 ó¼   • [        [        U5       VVs0 s H  u  p#X2_M	     snn5      n[        R                  " U  Vs/ s H  oTU   PM	     sn5      $ s  snnf s  snf )z,Map values based on its position in uniques.)r;   Ú	enumerater   Úarray)r   r   ÚiÚvalÚtableÚvs         r   Ú_map_to_integerrW   ¢   sN   € ä¬9°WÔ+=Ô>Ò+=¡ �c’fÑ+=Ò>Ó?€EÜ�8Š8¡vÓ.¢v !˜1”X¡vÑ.Ó/Ð/ùó ?ùÚ.s
   ”A
¾Ac                óÊ  •  [        U 5      n[        U5      u  p4[        U5      nUR                  UR	                  5       5        [
        R                  " XPR                  S9nU4nU(       a  U[        X5      4-  nU(       a  U[        X5      4-  n[        U5      S:X  a  US   $ U$ ! [         a1    [        S [        S U  5       5       5       5      n[        SU 35      ef = f)N©r   c              3   ó8   #   • U  H  oR                   v •  M     g 7fr>   )r/   )Ú.0Úts     r   Ú	<genexpr>Ú!_unique_python.<locals>.<genexpr>²   s   é € ÐLÒ/K¨!—~–~Ò/Kùó   ‚c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr>   )Útype)r[   rV   s     r   r]   r^   ²   s   é € Ð2KÂF¸q´4¸·7°7ÂFùr_   zPEncoders require their input argument must be uniformly strings or numbers. Got r   r   )Úsetr9   ÚsortedÚextendr*   r   rR   r   Ú	TypeErrorrW   Ú_get_countsr   )r   r	   r
   Úuniques_setÚmissing_valuesr   Útypesr!   s           r   r   r   ¨   sâ   € ð
Ü˜&“kˆÜ&6°{Ó&CÑ#ˆä˜Ó%ˆØ�‰�~×-Ñ-Ó/Ô0Ü—(’(˜7¯,©,Ñ7ˆð ˆ*€CæØ” Ó0Ð2Ñ2ˆæØ”˜FÓ,Ð.Ñ.ˆä˜“X “]ˆ3ˆq‰6Ð+¨Ð+øô ó 
ÜÑL¬sÑ2KÁFÓ2KÔ/KÓLÓLˆÜð'Ø', gð/ó
ð 	
ð
ús   ‚A B' Â';C"T)Úcheck_unknownc                ó,  • U R                   R                  S;   a   [        X5      $ U(       a)  [        X5      nU(       a  [	        S[        U5       35      e[        R                  " X5      $ ! [         a  n[	        S[        U5       35      eSnAff = f)ax  Helper function to encode values into [0, n_uniques - 1].

Uses pure python method for object dtype, and numpy method for
all other dtypes.
The numpy method has the limitation that the `uniques` need to
be sorted. Importantly, this is not checked but assumed to already be
the case. The calling method needs to ensure this for all non-object
values.

Parameters
----------
values : ndarray
    Values to encode.
uniques : ndarray
    The unique values in `values`. If the dtype is not object, then
    `uniques` needs to be sorted.
check_unknown : bool, default=True
    If True, check for values in `values` that are not in `unique`
    and raise an error. This is ignored for object dtype, and treated as
    True in this case. This parameter is useful for
    _BaseEncoder._transform() to avoid calling _check_unknown()
    twice.

Returns
-------
encoded : ndarray
    Encoded values
ÚOUSz%y contains previously unseen labels: N)	r   ÚkindrW   rI   Ú
ValueErrorÚstrÚ_check_unknownr   r   )r   r   rj   ÚeÚdiffs        r   Ú_encoders   Â   sŠ   € ð: ‡|�|×Ñ˜EÓ!ð	OÜ" 6Ó3Ð3ö Ü! &Ó2ˆDÞÜ Ð#HÌÈTËÈÐ!TÓUÐUÜ�Š˜wÓ/Ð/øô ó 	OÜÐDÄSÈÃVÀHÐMÓNÐNûð	Oús   œ
A- Á-
BÁ7BÂBc                 óü  ^^• SnU R                   R                  S;   Ga;  [        U 5      n[        U5      u  pE[        U5      m[        T5      u  mmUT-
  nUR                  =(       a    TR                  (       + nUR
                  =(       a    TR
                  (       + nUU4S jn	U(       ad  U(       d  U(       d  U(       a-  [        R                  " U  V
s/ s H
  o©" U
5      PM     sn
5      nO"[        R                  " [        U 5      [        S9n[        U5      nU(       a  UR                  S5        U(       a  UR                  [        R                  5        GO[        R                  " U 5      n[        R                  " X±SS9nU(       aJ  UR                  (       a  [        R                   " X5      nO"[        R                  " [        U 5      [        S9n[        R"                  " U5      R%                  5       (       ab  [        R"                  " U5      nUR%                  5       (       a7  UR                  (       a!  U(       a  [        R"                  " U 5      nSX='   Xl)    n[        U5      nU(       a  Xc4$ U$ s  sn
f )a=  
Helper function to check for unknowns in values to be encoded.

Uses pure python method for object dtype, and numpy method for
all other dtypes.

Parameters
----------
values : array
    Values to check for unknowns.
known_values : array
    Known values. Must be unique.
return_mask : bool, default=False
    If True, return a mask of the same shape as `values` indicating
    the valid values.

Returns
-------
diff : list
    The unique values present in `values` and not in `know_values`.
valid_mask : boolean array
    Additionally returned if ``return_mask=True``.

Nrl   c                 ó”   >• U T;   =(       d<    TR                   =(       a    U S L =(       d    TR                  =(       a    [        U 5      $ r>   )r%   r   r   )r6   Úmissing_in_uniquesrg   s    €€r   Úis_validÚ _check_unknown.<locals>.is_valid  sG   ø€ à˜Ñ$÷ )Ø%×*Ñ*÷ "Ø˜T�M÷)ð &×)Ñ)÷ )Ü! %Ó(ðr   rY   T©Úassume_uniquer   )r   rm   rb   r9   r   r%   r   rR   Úonesr   r2   Úlistr'   r   Ú	setdiff1dr   ÚisinÚisnanÚany)r   Úknown_valuesÚreturn_maskÚ
valid_maskÚ
values_setÚmissing_in_valuesrr   Únan_in_diffÚnone_in_diffrw   r6   Úunique_valuesÚdiff_is_nanÚis_nanrv   rg   s                 @@r   rp   rp   ì   sÆ  ù€ ð2 €Jà‡|�|×Ñ˜EÔ!Ü˜“[ˆ
Ü(8¸Ó(DÑ%ˆ
ä˜,Ó'ˆÜ*:¸;Ó*GÑ'ˆÐ'Ø˜KÑ'ˆà'×+Ñ+×JÐ4F×4JÑ4JÔ0JˆØ(×-Ñ-×MÐ6H×6MÑ6MÔ2Mˆö	ö Þ–{¦lÜŸXšXÁFÓ&KÂF¸5 x°¦ÁFÑ&KÓL‘
äŸWšW¤S¨£[¼Ñ=�
ä�D‹zˆÞØ�K‰K˜ÔÞØ�K‰KœŸ™ÔùäŸ	š	 &Ó)ˆÜ�|Š|˜MÀtÑLˆÞØ�y�yÜŸWšW VÓ:‘
äŸWšW¤S¨£[¼Ñ=�
ô �8Š8�LÓ!×%Ñ%×'Ñ'ÜŸ(š( 4›.ˆKØ�‰× Ñ à—9—9¦ÜŸXšX fÓ-�FØ)*�JÑ&ð ˜LÑ)�Ü�D‹zˆæØÐÐØ€KùòC 'Ls   ÃI9c                   ó8   ^ • \ rS rSrSrU 4S jrS rS rSrU =r	$ )Ú_NaNCounteriA  z$Counter with support for nan values.c                 óB   >• [         TU ]  U R                  U5      5        g r>   )r?   r@   Ú_generate_items)r(   rA   rE   s     €r   r@   Ú_NaNCounter.__init__D  s   ø€ Ü‰Ñ˜×-Ñ-¨eÓ4Õ5r   c              #   ó¤   #   • U HF  n[        U5      (       d  Uv •  M  [        U S5      (       d  SU l        U =R                  S-  sl        MH     g7f)z>Generate items without nans. Stores the nan counts separately.Ú	nan_countr   r   N)r   rH   r‘   )r(   rA   Úitems      r   rŽ   Ú_NaNCounter._generate_itemsG  sD   é € ãˆDÜ  ×&Ñ&Ø’
ÙÜ˜4 ×-Ñ-Ø!"�”Ø�NŠN˜aÑ�Nò ùs   ‚AAc                 ór   • [        U S5      (       a  [        U5      (       a  U R                  $ [        U5      e)Nr‘   )rH   r   r‘   rI   rJ   s     r   rK   Ú_NaNCounter.__missing__Q  rM   r   )r‘   )
r-   r.   r/   r0   r1   r@   rŽ   rK   r4   rN   rO   s   @r   rŒ   rŒ   A  s   ø† Ù.õ6ò ÷ð r   rŒ   c                 ó|  • U R                   R                  S;   ak  [        U 5      n[        R                  " [        U5      [        R                  S9n[        U5       H#  u  pE[        [        5         X%   X4'   SSS5        M%     U$ [        U SS9u  pg[        R                  " XSS9n[        R                  " US   5      (       a#  [        R                  " US   5      (       a  SUS'   [        R                  " XaU   5      n	[        R                  " U[        R                  S9nXy   X8'   U$ ! , (       d  f       MÞ  = f)zÀGet the count of each of the `uniques` in `values`.

The counts will use the order passed in by `uniques`. For non-object dtypes,
`uniques` is assumed to be sorted and `np.nan` is at the end.
ÚOUrY   NT)r
   ry   r   )r   rm   rŒ   r   Úzerosr   Úint64rQ   r   rI   r   r~   r   r   Ú
zeros_like)
r   r   Úcounterr)   rS   r’   rˆ   r   Úuniques_in_valuesÚunique_valid_indicess
             r   rf   rf   W  sþ   € ð ‡|�|×Ñ˜DÓ Ü˜fÓ%ˆÜ—’œ#˜g›,¬b¯h©hÑ7ˆÜ  Ö)‰GˆAÜœ(Õ#Ø#™M�‘	÷ $Ñ#ñ *ð ˆä& v¸TÑBÑ€Mô Ÿš ÀdÑKÐÜ	‡x‚x�˜bÑ!×"Ñ"¤r§x¢x°¸±×'<Ñ'<Ø $Ð˜"ÑäŸ?š?¨=ÐBSÑ:TÓUÐÜ�]Š]˜7¬"¯(©(Ñ3€FØ &Ñ <€FÑØ€M÷ $Ö#ús   Á1D,Ä,
D;	)FF)F)Úcollectionsr   Ú
contextlibr   Útypingr   Únumpyr   Ú_missingr   r   r   r#   r9   Údictr;   rW   r   rs   rp   rŒ   rf   r,   r   r   Ú<module>r¤      sr   ðÝ Ý Ý ã å #ð ',¸5õ &ôR&,ôR�Jô ò #)ôLˆtô ò 0ò,ð4 /3õ '0ôTRôj�'ô ó,r   