
    wc              	           d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZ  ed          Zde	dede
e         fd	Zd
ddedefdZddefdZddedede	e         defdZd
S )zLMiscellaneous minor utility functions that don't really belong anywhere else    )	signature)	getLogger)AnyCallableDictIterableIteratorListrequests_cacheiterablemax_sizereturnc              #      K   t          |           } t          dt          |           |          D ]}| |||z            V  dS )z+Split an iterable into chunks of a max sizer   N)listrangelen)r   r   indexs      7/usr/lib/python3/dist-packages/requests_cache/_utils.pychunkifyr   	   sZ      H~~Hq#h--22 1 1uux//000001 1    N)defaultvaluesc                 6    t          d |D             |           S )z4Get the first non-``None`` value in a list of valuesc              3      K   | ]}||V  	d S N ).0vs     r   	<genexpr>zcoalesce.<locals>.<genexpr>   s"      44qammmmm44r   )next)r   r   s     r   coalescer!      s!    44F444g>>>r   original_exceptionc                 :     d fd G fdd          }|S )zCreate a placeholder type for a class that does not have dependencies installed.
    This allows delaying ImportErrors until init time, rather than at import time.
    z/Dependencies are not installed for this featurec                  Z    t                                           pt                     r   )loggererrorImportError)msgr"   s   r   
_log_errorz)get_placeholder_class.<locals>._log_error   s(    S 4K$4$44r   c                   8    e Zd Z fdZ fdZ fdZ fdZdS )*get_placeholder_class.<locals>.Placeholderc                                   d S r   r   selfargskwargsr)   s      r   __init__z3get_placeholder_class.<locals>.Placeholder.__init__        JLLLLLr   c                                   d S r   r   r-   s      r   __getattr__z6get_placeholder_class.<locals>.Placeholder.__getattr__#   r2   r   c                                   d S r   r   r-   s      r   dumpsz0get_placeholder_class.<locals>.Placeholder.dumps&   r2   r   c                                   d S r   r   r-   s      r   loadsz0get_placeholder_class.<locals>.Placeholder.loads)   r2   r   N)__name__
__module____qualname__r1   r4   r6   r8   )r)   s   r   Placeholderr+      sy        	 	 	 	 		 	 	 	 		 	 	 	 		 	 	 	 	 	 	r   r<   r   )r"   r<   r)   r(   s   ` @@r   get_placeholder_classr=      sd     <C5 5 5 5 5 5          r   funcr0   extrasc                     t          t          |           j                                      |pg            fd|                                D             S )zHGet the subset of non-None ``kwargs`` that are valid params for ``func``c                 (    i | ]\  }}|v 	|||S r   r   )r   kr   paramss      r   
<dictcomp>z$get_valid_kwargs.<locals>.<dictcomp>3   s(    MMMTQqF{{q}Aq}}}r   )r   r   
parametersextenditems)r>   r0   r?   rC   s      @r   get_valid_kwargsrH   /   sQ    )D//,--F
MM&,BMMMMV\\^^MMMMr   r   )__doc__inspectr   loggingr   typingr   r   r   r   r	   r
   r%   intr   r!   	Exceptionr=   strrH   r   r   r   <module>rP      s<   R R             @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @	#	$	$1x 13 18D> 1 1 1 1 $( ? ? ?c ?C ? ? ? ?
 i    4N N8 NT N8C= NTX N N N N N Nr   