o
    2ge                     @  sN   d Z ddlmZ ddlZddlmZ ddlmZmZ ddl	m
Z
 dddZdS )z*Positional argument deprecation decorator.    )annotationsNwraps)AnyCallable)warnold_argsstrreturnr   c                    s   ddd d fd	d
}|S )N	used_argstuple[str, ...]r
   r	   c                 S  s   t tt| } t| }|dk rd| nd| d d  d| d  }|d|dkr,dnd	 7 }|d
7 }||dkr=d S d S )N   z and z, z, and z as     za zkeyword arguments)listmapreprlenjoin)r   	arg_count
arg_string r   P/home/garg/my-data/venv/lib/python3.10/site-packages/praw/util/deprecate_args.py_generate_arg_string   s   
z-_deprecate_args.<locals>._generate_arg_stringfuncr   c                   s   t  d fdd}|S )Nargsr   kwargsc                    s   t }dd |j D  tt fdd} r.|t |  t| t d  } | rI|d t|  }t	dj
d| dtdd	 d
i tt|| |S )Nc                 S  s"   g | ]\}}|j tjju r|qS r   )kindinspect	ParameterPOSITIONAL_OR_KEYWORD).0name	parameterr   r   r   
<listcomp>   s
    zE_deprecate_args.<locals>.wrapper.<locals>.wrapped.<locals>.<listcomp>c                   s   |  vS )Nr   )argpositional_argsr   r   <lambda>!   s    zC_deprecate_args.<locals>.wrapper.<locals>.wrapped.<locals>.<lambda>zPositional arguments for z@ will no longer be supported in PRAW 8.
Call this function with .   )
stacklevelr   )r    	signature
parametersitemstuplefilterupdatezipr   r   __qualname__DeprecationWarningdict)r   r   r.   	_old_argsr   )r   r   r   r(   r   wrapped   s$   

z1_deprecate_args.<locals>.wrapper.<locals>.wrapped)r   r   r   r   r   )r   r9   r   r   )r   r   wrapper   s   z _deprecate_args.<locals>.wrapper)r   r   r
   r	   )r   r   r   )r   r;   r   r:   r   _deprecate_args   s   
r<   )r   r	   r
   r   )__doc__
__future__r   r    	functoolsr   typingr   r   warningsr   r<   r   r   r   r   <module>   s    