§
    rŠtj#H  ã                   óª   — d Z ddlZddlZddlmZ ddlmZ ddlmZ  G d„ de	¦  «        Z
 G d„ d	e
¦  «        Zd
„ Z G d„ dej        ¦  «        Zdd„ZdS )ztThis module contains the _EstimatorPrettyPrinter class used in
BaseEstimator.__repr__ for pretty-printing estimatorsé    N)Ú
get_config)ÚBaseEstimator)Úis_scalar_nanc                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚKeyValTuplez@Dummy class for correctly rendering key-value tuples from dicts.c                 óD   •— t          ¦   «                              ¦   «         S )N)ÚsuperÚ__repr__)ÚselfÚ	__class__s    €úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/utils/_pprint.pyr
   zKeyValTuple.__repr__P   s   ø€ å‰wŒw×ÒÑ!Ô!Ð!ó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   Ú__classcell__©r   s   @r   r   r   M   s>   ø€ € € € € ØJÐJð"ð "ð "ð "ð "ð "ð "ð "ð "r   r   c                   ó   — e Zd ZdZdS )ÚKeyValTupleParamzEDummy class for correctly rendering key-value tuples from parameters.N)r   r   r   r   © r   r   r   r   U   s   € € € € € ØOÐOà€Dr   r   c                 óô   ‡‡— |                       d¬¦  «        }t          j        | j        ¦  «        j        Šd„ ‰                     ¦   «         D ¦   «         Šˆfd„Šˆfd„|                     ¦   «         D ¦   «         S )zgReturn dict (param_name: value) of parameters that were given to
    estimator with non-default values.F©Údeepc                 ó$   — i | ]\  }}||j         “ŒS r   )Údefault)Ú.0ÚnameÚparams      r   ú
<dictcomp>z#_changed_params.<locals>.<dictcomp>a   s    € ÐNÐNÐN©;¨4°�4˜œÐNÐNÐNr   c                 ó6  •— | ‰vrdS ‰|          t           j        k    rdS t          |t          ¦  «        r|j        ‰|          j        k    rdS t          |¦  «        t          ‰|          ¦  «        k    r&t          ‰|          ¦  «        rt          |¦  «        sdS dS )NTF)ÚinspectÚ_emptyÚ
isinstancer   r   Úreprr   )ÚkÚvÚinit_paramss     €r   Úhas_changedz$_changed_params.<locals>.has_changedc   s    ø€ Ø�KÐÐØ�4Ø�qŒ>�Wœ^Ò+Ð+Ø�4å�a�Ñ'Ô'ð 	¨A¬K¸;Àq¼>Ô;SÒ,SÐ,SØ�4å�‰7Œ7•d˜; qœ>Ñ*Ô*Ò*Ð*Ý˜+ aœ.Ñ)Ô)ð +Ý.;¸AÑ.>Ô.>ð +ð �4Øˆur   c                 ó4   •— i | ]\  }} ‰||¦  «        ¯||“ŒS r   r   )r   r&   r'   r)   s      €r   r    z#_changed_params.<locals>.<dictcomp>r   s0   ø€ ÐAÐAÐA‘T�Q˜¨{¨{¸1¸aÑ/@Ô/@ÐAˆAˆqÐAÐAÐAr   )Ú
get_paramsr"   Ú	signatureÚ__init__Ú
parametersÚitems)Ú	estimatorÚparamsr)   r(   s     @@r   Ú_changed_paramsr2   [   s�   øø€ ð ×!Ò! uÐ!Ñ-Ô-€FÝÔ# IÔ$6Ñ7Ô7ÔB€KØNÐN¸+×:KÒ:KÑ:MÔ:MÐNÑNÔN€Kðð ð ð ð ð BÐAÐAÐA˜VŸ\š\™^œ^ÐAÑAÔAÐAr   c                   óÄ   ‡ — e Zd ZdZ	 	 	 	 dddddœˆ fd„Zd	„ Zd
„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zej        j                             ¦   «         Zeeej        <   eeej        <   ˆ xZS )Ú_EstimatorPrettyPrintera
  Pretty Printer class for estimator objects.

    This extends the pprint.PrettyPrinter class, because:
    - we need estimators to be printed with their parameters, e.g.
      Estimator(param1=value1, ...) which is not supported by default.
    - the 'compact' parameter of PrettyPrinter is ignored for dicts, which
      may lead to very long representations that we want to avoid.

    Quick overview of pprint.PrettyPrinter (see also
    https://stackoverflow.com/questions/49565047/pprint-with-hex-numbers):

    - the entry point is the _format() method which calls format() (overridden
      here)
    - format() directly calls _safe_repr() for a first try at rendering the
      object
    - _safe_repr formats the whole object recursively, only calling itself,
      not caring about line length or anything
    - back to _format(), if the output string is too long, _format() then calls
      the appropriate _pprint_TYPE() method (e.g. _pprint_list()) depending on
      the type of the object. This where the line length and the compact
      parameters are taken into account.
    - those _pprint_TYPE() methods will internally use the format() method for
      rendering the nested objects of an object (e.g. the elements of a list)

    In the end, everything has to be implemented twice: in _safe_repr and in
    the custom _pprint_TYPE methods. Unfortunately PrettyPrinter is really not
    straightforward to extend (especially when we want a compact output), so
    the code is a bit convoluted.

    This class overrides:
    - format() to support the changed_only parameter
    - _safe_repr to support printing of estimators (for when they fit on a
      single line)
    - _format_dict_items so that dict are correctly 'compacted'
    - _format_items so that ellipsis is used on long lists and tuples

    When estimators cannot be printed on a single line, the builtin _format()
    will call _pprint_estimator() because it was registered to do so (see
    _dispatch[BaseEstimator.__repr__] = _pprint_estimator).

    both _format_dict_items() and _pprint_estimator() use the
    _format_params_or_dict_items() method that will format parameters and
    key-value pairs respecting the compact parameter. This method needs another
    subroutine _pprint_key_val_tuple() used when a parameter or a key-value
    pair is too long to fit on a single line. This subroutine is called in
    _format() and is registered as well in the _dispatch dict (just like
    _pprint_estimator). We had to create the two classes KeyValTuple and
    KeyValTupleParam for this.
    é   éP   NFT)ÚcompactÚindent_at_nameÚn_max_elements_to_showc                ó¾   •— t          ¦   «                              |||||¬¦  «         || _        | j        rd| _        t	          ¦   «         d         | _        || _        d S )N)r7   r5   Úprint_changed_only)r	   r-   Ú_indent_at_nameÚ_indent_per_levelr   Ú_changed_onlyr9   )	r   ÚindentÚwidthÚdepthÚstreamr7   r8   r9   r   s	           €r   r-   z _EstimatorPrettyPrinter.__init__¨   se   ø€ õ 	‰Œ×Ò˜ ¨¨v¸wÐÑGÔGÐGØ-ˆÔØÔð 	'Ø%&ˆDÔ"Ý'™\œ\Ð*>Ô?ˆÔð '=ˆÔ#Ð#Ð#r   c                 ó4   — t          ||||| j        ¬¦  «        S )N©Úchanged_only)Ú
_safe_reprr>   )r   ÚobjectÚcontextÚ	maxlevelsÚlevels        r   Úformatz_EstimatorPrettyPrinter.format½   s'   € ÝØ�G˜Y¨¸DÔ<Nð
ñ 
ô 
ð 	
r   c                 óŒ  — |                      |j        j        dz   ¦  «         | j        r|t	          |j        j        ¦  «        z  }| j        rt          |¦  «        }n|                     d¬¦  «        }|                      t          | 
                    ¦   «         ¦  «        |||dz   ||¦  «         |                      d¦  «         d S )Nú(Fr   r5   ú))Úwriter   r   r<   Úlenr>   r2   r+   Ú_format_paramsÚsortedr/   )r   rG   rB   r?   Ú	allowancerH   rJ   r1   s           r   Ú_pprint_estimatorz)_EstimatorPrettyPrinter._pprint_estimatorÂ   sÅ   € Ø�Š�VÔ%Ô.°Ñ4Ñ5Ô5Ð5ØÔð 	5Ø•c˜&Ô*Ô3Ñ4Ô4Ñ4ˆFàÔð 	3Ý$ VÑ,Ô,ˆFˆFà×&Ò&¨EÐ&Ñ2Ô2ˆFà×ÒÝ�6—<’<‘>”>Ñ"Ô" F¨F°IÀ±MÀ7ÈEñ	
ô 	
ð 	
ð 	�Š�SÑÔÐÐÐr   c           	      ó:   — |                       ||||||d¬¦  «        S )NT©Úis_dict©Ú_format_params_or_dict_items©r   r/   rB   r?   rS   rH   rJ   s          r   Ú_format_dict_itemsz*_EstimatorPrettyPrinter._format_dict_itemsÑ   s.   € Ø×0Ò0Ø�6˜6 9¨g°uÀdð 1ñ 
ô 
ð 	
r   c           	      ó:   — |                       ||||||d¬¦  «        S )NFrV   rX   rZ   s          r   rQ   z&_EstimatorPrettyPrinter._format_paramsÖ   s.   € Ø×0Ò0Ø�6˜6 9¨g°uÀeð 1ñ 
ô 
ð 	
r   c                 ó6  — |j         }|| j        z  }dd|z  z   }	d}
| j        |z
  dz   x}}t          |¦  «        }	 t	          |¦  «        }n# t
          $ r Y dS w xY wd}d}|�s6|| j        k    r |d¦  «         dS |dz  }|}	 t	          |¦  «        }n# t
          $ r d	}||z  }||z  }Y nw xY w| j        rš|\  }}|                      |||¦  «        }|                      |||¦  «        }|s| 	                    d
¦  «        }|rdnd}||z   |z   }t          |¦  «        dz   }||k     r|}|
r|	}
||k    r||z  } ||
¦  «         d}
 ||¦  «         Œð ||
¦  «         |	}
|rt          nt          }|                       ||¦  «        |||r|nd||¦  «         |�¯4dS dS )a-  Format dict items or parameters respecting the compact=True
        parameter. For some reason, the builtin rendering of dict items doesn't
        respect compact=True and will use one line per key-value if all cannot
        fit in a single line.
        Dict items will be rendered as <'key': value> while params will be
        rendered as <key=value>. The implementation is mostly copy/pasting from
        the builtin _format_items().
        This also adds ellipsis if the number of items is greater than
        self.n_max_elements_to_show.
        ú,
ú Ú r5   NFr   ú, ...Tú'ú: ú=é   ú, )rO   r=   Ú_widthÚiterÚnextÚStopIterationr9   Ú_compactÚ_reprÚstriprP   r   r   Ú_format)r   rG   rB   r?   rS   rH   rJ   rW   rO   ÚdelimnlÚdelimr@   Ú	max_widthÚitÚnext_entÚlastÚn_itemsÚentr&   r'   ÚkreprÚvreprÚmiddleÚrepÚwÚclass_s                             r   rY   z4_EstimatorPrettyPrinter._format_params_or_dict_itemsÛ   sQ  € ð ”ˆØ�$Ô(Ñ(ˆØ˜# ™,Ñ&ˆØˆØ œK¨&Ñ0°1Ñ4Ð4ˆ�	Ý�&‰\Œ\ˆð	Ý˜B‘x”xˆHˆHøÝð 	ð 	ð 	ØˆFˆFð	øøøàˆØˆØñ $	Ø˜$Ô5Ò5Ð5Ø��g‘”�Ø�Ø�q‰LˆGØˆCð#Ý ™8œ8��øÝ ð #ð #ð #Ø�Ø˜YÑ&�	Ø˜Ñ"���ð#øøøð Œ}ð Ø‘��1ØŸ
š
 1 g¨uÑ5Ô5�ØŸ
š
 1 g¨uÑ5Ô5�Øð -Ø!ŸKšK¨Ñ,Ô,�EØ!(Ð1˜˜¨c�Ø˜f‘n uÑ,�Ý˜‘H”H˜q‘L�Ø˜1’9�9Ø%�EØð (Ø '˜Ø˜A’:�:Ø˜Q‘J�EØ�E˜%‘L”L�LØ �EØ�E˜#‘J”J�JØØˆE�%‰LŒLˆLØˆEØ$+ÐA•[�[Õ1AˆFØ�LŠLØ��s‘”˜V V¸$Ð-E¨Y¨YÀAÀwÐPUñô ð ðE ñ $	ð $	ð $	ð $	ð $	s#   »A Á
AÁAÂB ÂB,Â+B,c                 óÀ  — |j         }|| j        z  }| j        dk    r || j        dz
  dz  ¦  «         dd|z  z   }d}	| j        |z
  dz   x}
}t          |¦  «        }	 t	          |¦  «        }n# t
          $ r Y dS w xY wd}d}|sÛ|| j        k    r |d¦  «         dS |dz  }|}	 t	          |¦  «        }n# t
          $ r d	}||z  }|
|z  }
Y nw xY w| j        rY|                      |||¦  «        }t          |¦  «        d
z   }|
|k     r|}
|	r|}	|
|k    r|
|z  }
 ||	¦  «         d}	 ||¦  «         Œ® ||	¦  «         |}	|  
                    ||||r|nd||¦  «         |¯ÙdS dS )zÏFormat the items of an iterable (list, tuple...). Same as the
        built-in _format_items, with support for ellipsis if the number of
        elements is greater than self.n_max_elements_to_show.
        r5   r_   r^   r`   NFr   ra   Tre   rf   )rO   r=   rg   rh   ri   rj   r9   rk   rl   rP   rn   )r   r/   rB   r?   rS   rH   rJ   rO   ro   rp   r@   rq   rr   rs   rt   ru   rv   rz   r{   s                      r   Ú_format_itemsz%_EstimatorPrettyPrinter._format_items  s  € ð
 ”ˆØ�$Ô(Ñ(ˆØÔ! AÒ%Ð%ØˆE�4Ô)¨AÑ-°Ñ4Ñ5Ô5Ð5Ø˜# ™,Ñ&ˆØˆØ œK¨&Ñ0°1Ñ4Ð4ˆ�	Ý�%‰[Œ[ˆð	Ý˜B‘x”xˆHˆHøÝð 	ð 	ð 	ØˆFˆFð	øøøàˆØˆØð 	XØ˜$Ô5Ò5Ð5Ø��g‘”�Ø�Ø�q‰LˆGØˆCð#Ý ™8œ8��øÝ ð #ð #ð #Ø�Ø˜YÑ&�	Ø˜Ñ"���ð#øøøð Œ}ð Ø—j’j  g¨uÑ5Ô5�Ý˜‘H”H˜q‘L�Ø˜1’9�9Ø%�EØð (Ø '˜Ø˜A’:�:Ø˜Q‘J�EØ�E˜%‘L”L�LØ �EØ�E˜#‘J”J�JØØˆE�%‰LŒLˆLØˆEØ�LŠL˜˜f f¸4Ð.F¨i¨iÀQÈÐQVÑWÔWÐWð7 ð 	Xð 	Xð 	Xð 	Xð 	Xs$   ÁA, Á,
A:Á9A:Â#B3 Â3CÃCc                 ód  — |\  }}|                       |||¦  «        }	t          |t          ¦  «        r|	                     d¦  «        }	d}
nd}
|                     |	¦  «         |                     |
¦  «         |                      |||t          |	¦  «        z   t          |
¦  «        z   |||¦  «         dS )z=Pretty printing for key-value tuples from dict or parameters.rb   rd   rc   N)rl   r$   r   rm   rO   rn   rP   )r   rG   rB   r?   rS   rH   rJ   r&   r'   rz   ry   s              r   Ú_pprint_key_val_tuplez-_EstimatorPrettyPrinter._pprint_key_val_tupleJ  sµ   € à‰ˆˆ1Ø�jŠj˜˜G UÑ+Ô+ˆÝ�fÕ.Ñ/Ô/ð 	Ø—)’)˜C‘.”.ˆCØˆFˆFàˆFØ�Š�SÑÔÐØ�Š�VÑÔÐØ�ŠØˆv�v¥ C¡¤Ñ(­3¨v©;¬;Ñ6¸	À7ÈEñ	
ô 	
ð 	
ð 	
ð 	
r   )r5   r6   NN)r   r   r   r   r-   rK   rT   r[   rQ   rY   r~   r€   ÚpprintÚPrettyPrinterÚ	_dispatchÚcopyr   r
   r   r   r   s   @r   r4   r4   u   s  ø€ € € € € ð0ð 0ðh ØØØð=ð ØØ#ð=ð =ð =ð =ð =ð =ð =ð*
ð 
ð 
ð
ð ð ð
ð 
ð 
ð

ð 
ð 
ð
=ð =ð =ð~.Xð .Xð .Xð`
ð 
ð 
ð& Ô$Ô.×3Ò3Ñ5Ô5€IØ(9€IˆmÔ$Ñ%Ø&;€IˆkÔ"Ñ#Ð#Ð#Ð#Ð#r   r4   Fc                 óÞ  — t          | ¦  «        }|t          j        v rt          | ¦  «        ddfS t	          |dd¦  «        }t          |t          ¦  «        �r |t          j        u rò| sdS t          | ¦  «        }|r||k    rdd||v fS ||v rt          j	        | ¦  «        ddfS d||<   d}d}	g }
|
j
        }|dz  }t          }t          |                      ¦   «         t          j        ¬¦  «        }|D ]I\  }} ||||||¬	¦  «        \  }}} ||||||¬	¦  «        \  }}} ||›d
|›�¦  «         |o|o|}|s|rd}	ŒJ||= dd                     |
¦  «        z  ||	fS t          |t           ¦  «        r|t           j        u s#t          |t"          ¦  «        rç|t"          j        u rÙt          |t           ¦  «        r| sdS d}nt%          | ¦  «        dk    rd}n| sdS d}t          | ¦  «        }|r||k    r
|dz  d||v fS ||v rt          j	        | ¦  «        ddfS d||<   d}d}	g }
|
j
        }|dz  }| D ]-}t          |||||¬	¦  «        \  }}} ||¦  «         |sd}|rd}	Œ.||= |d                     |
¦  «        z  ||	fS t          |t&          ¦  «        �r9t          | ¦  «        }|r||k    r|j        › d�d||v fS ||v rt          j	        | ¦  «        ddfS d||<   d}d}	|rt+          | ¦  «        }n|                      d¬¦  «        }g }
|
j
        }|dz  }t          }t          |                     ¦   «         t          j        ¬¦  «        }|D ]\\  }} ||||||¬	¦  «        \  }}} ||||||¬	¦  «        \  }}} ||                     d¦  «        ›d|›�¦  «         |o|o|}|s|rd}	Œ]||= |j        ›dd                     |
¦  «        ›d�||	fS t          | ¦  «        }||o|                     d¦  «         dfS )zMSame as the builtin _safe_repr, with added support for Estimator
    objects.TFr
   N)z{}TFz{...}r5   )ÚkeyrD   rc   z{%s}rf   )z[]TFz[%s]z(%s,))z()TFz(%s)z...z(...)r   rb   rd   rM   rN   ú<)Útyper�   Ú_builtin_scalarsr%   ÚgetattrÚ
issubclassÚdictr
   ÚidÚ
_recursionÚappendrF   rR   r/   Ú_safe_tupleÚjoinÚlistÚtuplerP   r   r   r2   r+   rm   Ú
startswith)rG   rH   rI   rJ   rE   ÚtypÚrÚobjidÚreadableÚ	recursiveÚ
componentsr�   Úsafereprr/   r&   r'   rw   Ú	kreadableÚkrecurrx   Ú	vreadableÚvrecurrK   ÚoÚoreprÚ	oreadableÚorecurr1   rz   s                                r   rF   rF   b  sc  € õ ˆv‰,Œ,€Cà
�fÔ%Ð%Ð%Ý�F‰|Œ|˜T 5Ð(Ð(å��Z Ñ&Ô&€AÝ�#•tÑÔñ C ¥d¤mÐ!3Ð!3Øð 	%Ø$Ð$Ý�6‘
”
ˆØð 	4˜ )Ò+Ð+Ø˜E 5¨GÐ#3Ð3Ð3Ø�GÐÐÝÔ$ VÑ,Ô,¨e°TÐ9Ð9Øˆ�‰ØˆØˆ	Øˆ
ØÔ"ˆØ�‰
ˆÝˆÝ�v—|’|‘~”~­6Ô+=Ð>Ñ>Ô>ˆØð 
	!ð 
	!‰DˆAˆqØ'/ xØ�7˜I u¸<ð(ñ (ô (Ñ$ˆE�9˜fð (0 xØ�7˜I u¸<ð(ñ (ô (Ñ$ˆE�9˜fð ˆF˜u˜u˜u e eÐ,Ñ-Ô-Ð-ØÐ; IÐ;°)ˆHØð !˜ð !Ø �	øØ�EˆNØ˜Ÿ	š	 *Ñ-Ô-Ñ-¨x¸ÐBÐBå�3�ÑÔð "C !¥t¤}Ð"4Ð"4Ý�3�ÑÔð #5Ø#$­¬Ð#6Ð#6å�c�4Ñ Ô ð 		Øð )Ø(Ð(ØˆFˆFÝ�‰[Œ[˜AÒÐØˆFˆFàð )Ø(Ð(ØˆFÝ�6‘
”
ˆØð 	;˜ )Ò+Ð+Ø˜E‘> 5¨%°7Ð*:Ð:Ð:Ø�GÐÐÝÔ$ VÑ,Ô,¨e°TÐ9Ð9Øˆ�‰ØˆØˆ	Øˆ
ØÔ"ˆØ�‰
ˆØð 	!ð 	!ˆAÝ'1Ø�7˜I u¸<ð(ñ (ô (Ñ$ˆE�9˜fð ˆF�5‰MŒMˆMØð !Ø �Øð !Ø �	øØ�EˆNØ˜Ÿ	š	 *Ñ-Ô-Ñ-¨x¸ÐBÐBå�#•}Ñ%Ô%ñ WÝ�6‘
”
ˆØð 	C˜ )Ò+Ð+Ø”lÐ)Ð)Ð)¨5°%¸7Ð2BÐBÐBØ�GÐÐÝÔ$ VÑ,Ô,¨e°TÐ9Ð9Øˆ�‰ØˆØˆ	Øð 	3Ý$ VÑ,Ô,ˆFˆFà×&Ò&¨EÐ&Ñ2Ô2ˆFØˆ
ØÔ"ˆØ�‰
ˆÝˆÝ�v—|’|‘~”~­6Ô+=Ð>Ñ>Ô>ˆØð 
	!ð 
	!‰DˆAˆqØ'/ xØ�7˜I u¸<ð(ñ (ô (Ñ$ˆE�9˜fð (0 xØ�7˜I u¸<ð(ñ (ô (Ñ$ˆE�9˜fð ˆF˜eŸkšk¨#Ñ.Ô.Ð.Ð.°°Ð6Ñ7Ô7Ð7ØÐ; IÐ;°)ˆHØð !˜ð !Ø �	øØ�EˆNØœL˜L˜L¨$¯)ª)°JÑ*?Ô*?Ð*?Ð*?Ð@À(ÈIÐVÐVå
ˆv‰,Œ,€CØ�Ð0˜SŸ^š^¨CÑ0Ô0Ð0°5Ð8Ð8r   )F)r   r"   r�   Úsklearn._configr   Úsklearn.baser   Úsklearn.utils._missingr   r“   r   r   r2   r‚   r4   rF   r   r   r   ú<module>r§      s  ðð9ð 9ðH €€€Ø €€€à &Ð &Ð &Ð &Ð &Ð &Ø &Ð &Ð &Ð &Ð &Ð &Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ð"ð "ð "ð "ð "�%ñ "ô "ð "ð	ð 	ð 	ð 	ð 	�{ñ 	ô 	ð 	ðBð Bð Bð4j<ð j<ð j<ð j<ð j<˜fÔ2ñ j<ô j<ð j<ðZl9ð l9ð l9ð l9ð l9ð l9r   