
    0PhB                     T    d dl Z d dlZd dlmZ dgZ G d d          Zd Zd Zd ZdS )    N)	signature
deprecatedc                   2    e Zd ZdZd	dZd Zd Zd Zd ZdS )
r   a  Decorator to mark a function or class as deprecated.

    Issue a warning when the function is called/the class is instantiated and
    adds a warning to the docstring.

    The optional extra argument will be appended to the deprecation message
    and the docstring. Note: to use this with the default value for extra, put
    in an empty of parentheses:

    Examples
    --------
    >>> from sklearn.utils import deprecated
    >>> deprecated()
    <sklearn.utils.deprecation.deprecated object at ...>
    >>> @deprecated()
    ... def some_function(): pass

    Parameters
    ----------
    extra : str, default=''
          To be added to the deprecation messages.
     c                     || _         d S )N)extra)selfr   s     Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/utils/deprecation.py__init__zdeprecated.__init__&   s    


    c                     t          |t                    r|                     |          S t          |t                    r|                     |          S |                     |          S )zPCall method

        Parameters
        ----------
        obj : object
        )
isinstancetype_decorate_classproperty_decorate_property_decorate_fun)r	   objs     r
   __call__zdeprecated.__call__)   sf     c4   	+'',,,X&& 
	+ **3///%%c***r   c                     d|j         z  | j        rd| j        z  z  |j        t          |          }fd}||_        d|_         |_        ||_        |S )NzClass %s is deprecated; %sc                     t          j        t                     t          j        u rt                              |           S  | g|R i |S N)category)warningswarnFutureWarningobject__new__)clsargskwargsmsgnews      r
   wrappedz+deprecated._decorate_class.<locals>.wrappedF   sW    M#6666fn$$~~c***3s,T,,,V,,,r   r   )__name__r   r   r   deprecated_original__signature__)r	   r    sigr%   r#   r$   s       @@r
   r   zdeprecated._decorate_class>   s    &5: 	'6DJ&&Cknn	- 	- 	- 	- 	- 	- $&)#
r   c                     dj         z  | j        rd| j        z  z  t          j                  fd            }|_        |S )zDecorate function funzFunction %s is deprecatedr   c                  J    t          j        t                      | i |S r   )r   r   r   )r!   r"   funr#   s     r
   r%   z)deprecated._decorate_fun.<locals>.wrapped]   s-    M#66663''''r   )r&   r   	functoolswraps__wrapped__)r	   r,   r%   r#   s    ` @r
   r   zdeprecated._decorate_funV   so     *CL8: 	'6DJ&&C				( 	( 	( 	( 	( 
		( "r   c                 |    | j         t          t          j        j                  fd                        }|S )Nc                  T    t          j        t                      j        | i |S r   )r   r   r   fget)r!   r"   r#   props     r
   r%   z.deprecated._decorate_property.<locals>.wrappedk   s1     M#666649d-f---r   )r   r   r-   r.   r2   )r	   r3   r%   r#   s    ` @r
   r   zdeprecated._decorate_propertyh   sQ    j			#	#	. 	. 	. 	. 	. 
$	# 
	. r   N)r   )	r&   
__module____qualname____doc__r   r   r   r   r    r   r
   r   r      sn         4   + + +*  0  $	 	 	 	 	r   c                 r    t          | dg           }|g }dd                    d |D                       v }|S )z>Helper to check if func is wrapped by our deprecated decorator__closure__Nr   r   c                 P    g | ]#}t          |j        t                    |j        $S r7   )r   cell_contentsstr).0cs     r
   
<listcomp>z"_is_deprecated.<locals>.<listcomp>z   s+    OOOQj#.N.NOOOOr   )getattrjoin)funcclosuresis_deprecateds      r
   _is_deprecatedrE   t   sQ    t]B//H BGGOO(OOO% % M r   c                     | |t          d          | |t          d          |t          j        dt                     |S | S )zKHelper to deprecate the `Xt` argument in favor of `X` in inverse_transform.Nz%Cannot use both X and Xt. Use X only.z(Missing required positional argument: X.z;Xt was renamed X in version 1.5 and will be removed in 1.7.)	TypeErrorr   r   r   )XXts     r
   "_deprecate_Xt_in_inverse_transformrJ      s]    }?@@@yRZBCCC	~I	
 	
 	
 	Hr   c                 t    | dk    r-t          j        dt                     |t          d          | S |dS |S )zCHelper to deprecate force_all_finite in favor of ensure_all_finite.r   zX'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.Nzb'force_all_finite' and 'ensure_all_finite' cannot be used together. Pass `ensure_all_finite` only.T)r   r   r   
ValueError)force_all_finiteensure_all_finites     r
   _deprecate_force_all_finiterO      sa    <''	
 	
 	
 (1  
   tr   )	r-   r   inspectr   __all__r   rE   rJ   rO   r7   r   r
   <module>rR      s              .f f f f f f f fR    (    r   