
    [c>P                     
   d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZ ddlZi Z ed&i dd gdd	 gd
d d gdd gdd d d gdd gdd gdd'dgdd d d gdd d  d(d#gd$d% gd&d' gd(d) gd*d+ gd,d- gd.d)d/gd0d1 gd2d3 d4 gd5d6 d7 gd8d9 gd:dd*d;fgd<d= d> d? gd@dA dB dC gdDdd+dGfgdHdI gdJd,dLgdMdN dO gdPdQ dR gdSdT dU gdVdW gdXdY gdZd[ gd\d] gd^d_ gd`da db gdcd*dddd-dffgdgdh gdidj gdkdl gdmdn do gdpdq gdrds dt gdudv gdwd*dxdd-dyfgdzd{ gd|dd} fgd~d d gdd gdd gdd gdd d gdd.dgdd d d gdd d gdd d gdd gdd gdd gddd*dfgdd d gdd gdd d d gdd gdd d gdd d gdd d gdd d gdd gdd d/dgdd d gdd d d gddÄ gdddƄ dfgdd	 d.dɄfgee<   dʄ d˄ d̄ gee         d<   ee                             d΄ gdτ dЄ d(dфgd	 d0d҄fgddӄ dfddՄ dfgddׄ dfdd؄ dfgd	 d1dڄfgddۄ dfgd2dބgߦ           dd dfgee         d<    edd fgd gd gd d g          ee<    ed&i ddd3dfgdd gddd fgddd fgddd fgdd4dgdd gdd gdd gddd3dfgdd gdd  gdd gdd d d gdd gd	dd
 dfgddd*dfgddd*dfgdd gdd gdd d gddd dfgee<   ee                             dd dfg            ed&i dd gdd gd d! gd"d# gd$d% gd&d' gd(d) gd*d+ gd,d- gd.d/ gd0d1 gd2d3 gd4d5 gd6d7 gd8d9 gd:d; gd<d= gd>d? gd@dA gdBdC gdDdE gdFdG gdHdI gdJdK gdLdM gdNdO gdPdQ gdRdS gdTdU gdVdW gdXdY gdZd[ gd\d] gd^d_ gd`da gdbdc gddde gdfdg gdhdi gdjdk gdldm gdndo gdpdq gdrds gdtdu gdvdw gdxdy gdzd{ gd|d} gd~d gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdÐdĄ gdŐdƄ gdǐdȄ gdɐdʄ gdːd̄ gd͐d΄ gdϐdЄ gdѐd҄ gdӐdԄ gdՐdք gdאd؄ gdِdڄ gdېd܄ gdݐdބ gdߐd d gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gdd gd d gdd gdd gdd gdd	 gee<    edd
 fgdd3dfgdd5dfgdd fgdd5dfg          ed<    edd fgd	 d6dfg          ed<   d Zd Zd Zd Zi ZeefdZd Zd Zd Zd Zd Zd Zd  Zd! Zd" Zd# Z d$ Z!d% Z"dS (7  a  Internal module for better introspection of builtins.

The main functions are ``is_builtin_valid_args``, ``is_builtin_partial_args``,
and ``has_unknown_args``.  Other functions in this module support these three.

Notably, we create a ``signatures`` registry to enable introspection of
builtin functions in any Python version.  This includes builtins that
have more than one valid signature.  Currently, the registry includes
builtins from ``builtins``, ``functools``, ``itertools``, and ``operator``
modules.  More can be added as requested.  We don't guarantee full coverage.

Everything in this module should be regarded as implementation details.
Users should try to not use this module directly.
    N)import_module   )is_partial_argsis_arityhas_varargshas_keywordsnum_required_argsabsc                     d S N xs    1lib/python3.11/site-packages/toolz/_signatures.py<lambda>r   -       $     allc                     d S r   r   iterables    r   r   r   /        r   anextc                     d S r   r   )	aiterators    r   r   r   1       $ r   c                     d S r   r   )r   defaults     r   r   r   2       4 r   anyc                     d S r   r   r   s    r   r   r   4   r   r   applyc                     d S r   r   objects    r   r   r   6       t r   c                     d S r   r   )r%   argss     r   r   r   7       T r   c                     d S r   r   )r%   r(   kwargss      r   r   r   8       T r   asciic                     d S r   r   objs    r   r   r   :       D r   binc                     d S r   r   numbers    r   r   r   <   r&   r   boolFc                     d S r   r   r   s    r   r   r   >        r   bufferc                     d S r   r   r$   s    r   r   r   @   r&   r   c                     d S r   r   )r%   offsets     r   r   r   A       t r   c                     d S r   r   )r%   r<   sizes      r   r   r   B   r,   r   	bytearrayc                      d S r   r   r   r   r   r   r   D        r   c                     d S r   r   ints    r   r   r   E   r1   r   utf8strictc                     d S r   r   stringencodingerrorss      r   r   r   F        r   callablec                     d S r   r   r/   s    r   r   r   H   r1   r   chrc                     d S r   r   is    r   r   r   J   r   r   classmethodc                     d S r   r   functions    r   r   r   L   r   r   cmpc                     d S r   r   r   ys     r   r   r   N       T r   coercec                     d S r   r   rZ   s     r   r   r   P   r\   r   complexc                     d S r   r   )realimags     r   r   r   R   r=   r   delattrc                     d S r   r   r0   names     r   r   r   T   r   r   dictc                      d S r   r   )r+   s    r   r   r   V   r   r   c                     d S r   r   )mappingr+   s     r   r   r   W       $ r   dirc                      d S r   r   r   r   r   r   r   Y   rB   r   c                     d S r   r   r$   s    r   r   r   Z   r&   r   divmodc                     d S r   r   rZ   s     r   r   r   \   r\   r   	enumeratec                     d S r   r   r   starts     r   r   r   ^       d r   evalc                     d S r   r   sources    r   r   r   `   r&   r   c                     d S r   r   ry   globalss     r   r   r   a        r   c                     d S r   r   ry   r|   localss      r   r   r   b        r   execfilec                     d S r   r   )filenames    r   r   r   d   r   r   c                     d S r   r   )r   r|   s     r   r   r   e   rk   r   c                     d S r   r   )r   r|   r   s      r   r   r   f   s    $ r   filerc                     d S r   r   )rf   mode	bufferings      r   r   r   h   s     r   filterc                     d S r   r   )rW   r   s     r   r   r   j   r   r   float        c                     d S r   r   r   s    r   r   r   l       d r   formatc                     d S r   r   )values    r   r   r   n   r   r   c                     d S r   r   )r   format_specs     r   r   r   o   r   r   	frozensetc                      d S r   r   r   r   r   r   r   q   rB   r   c                     d S r   r   r   s    r   r   r   r   r   r   getattrc                     d S r   r   )r%   rf   s     r   r   r   t   r)   r   c                     d S r   r   )r%   rf   r   s      r   r   r   u   ru   r   r|   c                      d S r   r   r   r   r   r   r   w   rB   r   hasattrc                     d S r   r   re   s     r   r   r   y   r   r   hashc                     d S r   r   r/   s    r   r   r   {   r1   r   hexc                     d S r   r   r4   s    r   r   r   }   r&   r   idc                     d S r   r   r/   s    r   r   r      r1   r   inputc                      d S r   r   r   r   r   r   r      rB   r   c                     d S r   r   prompts    r   r   r      r&   r   rE   c                     d S r   r   r   s    r   r   r      r1   r   
   c                     d S r   r   r   bases     r   r   r      r=   r   internc                     d S r   r   )rJ   s    r   r   r      r&   r   
isinstancec                     d S r   r   )r0   class_or_tuples     r   r   r          D r   
issubclassc                     d S r   r   )clsr   s     r   r   r      r   r   iterc                     d S r   r   r   s    r   r   r      r   r   c                     d S r   r   )rN   sentinels     r   r   r      r   r   lenc                     d S r   r   r/   s    r   r   r      r1   r   listc                      d S r   r   r   r   r   r   r      rB   r   c                     d S r   r   r   s    r   r   r      r   r   r   c                      d S r   r   r   r   r   r   r      rB   r   longc                     d S r   r   r   s    r   r   r      r1   r   c                     d S r   r   r   s     r   r   r      r=   r   mapc                     d S r   r   funcsequence	iterabless      r   r   r          4 r   
memoryviewc                     d S r   r   r$   s    r   r   r          4 r   nextc                     d S r   r   )iterators    r   r   r      r   r   c                     d S r   r   )r   r   s     r   r   r      rk   r   r%   c                      d S r   r   r   r   r   r   r      rB   r   octc                     d S r   r   r4   s    r   r   r      r&   r   ordc                     d S r   r   )cs    r   r   r      r   r   powc                     d S r   r   rZ   s     r   r   r      r\   r   c                     d S r   r   )r   r[   zs      r   r   r      r8   r   propertyc                     d S r   r   )fgetfsetfdeldocs       r   r   r      s    $ r   rangec                     d S r   r   stops    r   r   r      r\   r   c                     d S r   r   rt   r   s     r   r   r          D r   c                     d S r   r   rt   r   steps      r   r   r      rk   r   	raw_inputc                      d S r   r   r   r   r   r   r      rB   r   c                     d S r   r   r   s    r   r   r      r&   r   reducec                     d S r   r   rW   r   s     r   r   r      r   r   c                     d S r   r   rW   r   initials      r   r   r          D r   reloadc                     d S r   r   )modules    r   r   r      r&   r   reprc                     d S r   r   r/   s    r   r   r      r1   r   reversedc                     d S r   r   )r   s    r   r   r      r   r   roundc                     d S r   r   )r5   ndigitss     r   r   r      ru   r   setc                      d S r   r   r   r   r   r   r      rB   r   c                     d S r   r   r   s    r   r   r      r   r   setattrc                     d S r   r   )r0   rf   r   s      r   r   r      s     r   slicec                     d S r   r   r   s    r   r   r      r\   r   c                     d S r   r   r   s     r   r   r      r   r   c                     d S r   r   r   s      r   r   r      rk   r   staticmethodc                     d S r   r   rV   s    r   r   r      r   r   sumc                     d S r   r   r   s    r   r   r      r   r   c                     d S r   r   rs   s     r   r   r      r}   r   superc                     d S r   r   )types    r   r   r      r\   r   c                     d S r   r   )r  r0   s     r   r   r      r   r   tuplec                      d S r   r   r   r   r   r   r      rB   r   c                     d S r   r   r   s    r   r   r      r   r   r  c                     d S r   r   r$   s    r   r   r      r&   r   c                     d S r   r   )rf   basesrg   s      r   r   r      rk   r   unichrc                     d S r   r   rR   s    r   r   r      r   r   unicodec                     d S r   r   r$   s    r   r   r      r&   r    c                     d S r   r   rI   s      r   r   r      s    D r   varsc                      d S r   r   r   r   r   r   r      rB   r   c                     d S r   r   r$   s    r   r   r      r&   r   xrangec                     d S r   r   r   s    r   r   r      r\   r   c                     d S r   r   r   s     r   r   r      r   r   c                     d S r   r   r   s      r   r   r      rk   r   zipc                      d S r   r   r   s    r   r   r      r   r   __build_class__   c                     d S r   r   )r   rf   r  kwdss       r   r   r      s    t r   )	metaclass
__import__c                     d S r   r   )rf   r|   r   fromlistlevels        r   r   r      s
     r   c                     d S r   r   rx   s    r   r   r      s    4 r   c                     d S r   r   r{   s     r   r   r      r   r   c                     d S r   r   r   s      r   r   r      r   r   execc                      d S r   r   )r(   kwss     r   r   r      r)   r   c                      d S r   r   r   r   r   r   r      rB   r   c                     d S r   r   rD   s    r   r   r      r1   r   c                     d S r   r   rI   s      r   r   r      rM   r   c                     d S r   r   )ry   r   r   flagsdont_inheritoptimizes         r   r   r      s
    -1 r   c                     d S r   r   r   s    r   r   r      r)   r   )r   keyc                     d S r   r   arg1arg2r(   s      r   r   r      ru   r   )rB  c                     d S r   r   r   s    r   r   r      r)   r   c                     d S r   r   rD  s      r   r   r      ru   r   Tc                     d S r   r   )r   r   r   rK   rL   newlineclosefdopeners           r   r   r      s
    BF r   c                     d S r   r   r   s    r   r   r     r)   r   )rB  reverseutfc                     d S r   r   )r%   rK   rL   s      r   r   r     s    4 r   )
breakpointbytescompilemaxminopensortedstrc                      d S r   r   )r(   s    r   r   r     r   r   )sependr   flushprintc                     d S r   r   )mycmps    r   r   r     r   r   c                     d S r   r   r   r(   r+   s      r   r   r     ru   r   c                     d S r   r   ra  s      r   r   r     ru   r   c                     d S r   r   r   s     r   r   r     r   r   c                     d S r   r   r   s      r   r   r     r   r   )
cmp_to_keypartialpartialmethodr   
accumulatec                     d S r   r   )r   r   s     r   r   r     r   r   chainc                      d S r   r   r*  s    r   r   r     r   r   combinationsc                     d S r   r   r   r   s     r   r   r     r}   r   combinations_with_replacementc                     d S r   r   rn  s     r   r   r     r}   r   compressc                     d S r   r   )data	selectorss     r   r   r     r   r   countc                     d S r   r   )rt   r   s     r   r   r   !  r}   r   cyclec                     d S r   r   r   s    r   r   r   #  r   r   	dropwhilec                     d S r   r   	predicater   s     r   r   r   %  r   r   filterfalsec                     d S r   r   r   s     r   r   r   '  r   r   groupbyc                     d S r   r   )r   rB  s     r   r   r   )  s    t r   ifilterc                     d S r   r   r   s     r   r   r   +  r   r   ifilterfalsec                     d S r   r   r   s     r   r   r   -  r   r   imapc                     d S r   r   r   s      r   r   r   /  r   r   islicec                     d S r   r   )r   r   s     r   r   r   1  r=   r   c                     d S r   r   )r   rt   r   s      r   r   r   2  ru   r   c                     d S r   r   )r   rt   r   r   s       r   r   r   3  r   r   izipc                      d S r   r   r*  s    r   r   r   5  r   r   izip_longestc                      d S r   r   r*  s    r   r   r   7  r=   r   )	fillvaluepermutationsc                     d S r   r   rn  s     r   r   r   9  rk   r   repeatc                     d S r   r   )r%   timess     r   r   r   ;  r   r   starmapc                     d S r   r   r   s     r   r   r   =  r   r   	takewhilec                     d S r   r   r{  s     r   r   r   ?  r   r   teec                     d S r   r   r   s    r   r   r   A  r   r   c                     d S r   r   )r   ns     r   r   r   B  r   r   zip_longestc                      d S r   r   r*  s    r   r   r   D  r=   r   c                      d S r   r   r*  s    r   r   r   I  r=   r   )r  )product__abs__c                     d S r   r   as    r   r   r   O  r   r   __add__c                     d S r   r   r  bs     r   r   r   Q  r\   r   __and__c                     d S r   r   r  s     r   r   r   S  r\   r   
__concat__c                     d S r   r   r  s     r   r   r   U  r\   r   __contains__c                     d S r   r   r  s     r   r   r   W  r\   r   __delitem__c                     d S r   r   r  s     r   r   r   Y  r\   r   __delslice__c                     d S r   r   r  r  r   s      r   r   r   [  r8   r   __div__c                     d S r   r   r  s     r   r   r   ]  r\   r   __eq__c                     d S r   r   r  s     r   r   r   _  r\   r   __floordiv__c                     d S r   r   r  s     r   r   r   a  r\   r   __ge__c                     d S r   r   r  s     r   r   r   c  r\   r   __getitem__c                     d S r   r   r  s     r   r   r   e  r\   r   __getslice__c                     d S r   r   r  s      r   r   r   g  r8   r   __gt__c                     d S r   r   r  s     r   r   r   i  r\   r   __iadd__c                     d S r   r   r  s     r   r   r   k  r\   r   __iand__c                     d S r   r   r  s     r   r   r   m  r\   r   __iconcat__c                     d S r   r   r  s     r   r   r   o  r\   r   __idiv__c                     d S r   r   r  s     r   r   r   q  r\   r   __ifloordiv__c                     d S r   r   r  s     r   r   r   s  r\   r   __ilshift__c                     d S r   r   r  s     r   r   r   u  r\   r   __imatmul__c                     d S r   r   r  s     r   r   r   w  r\   r   __imod__c                     d S r   r   r  s     r   r   r   y  r\   r   __imul__c                     d S r   r   r  s     r   r   r   {  r\   r   	__index__c                     d S r   r   r  s    r   r   r   }  r   r   __inv__c                     d S r   r   r  s    r   r   r     r   r   
__invert__c                     d S r   r   r  s    r   r   r     r   r   __ior__c                     d S r   r   r  s     r   r   r     r\   r   __ipow__c                     d S r   r   r  s     r   r   r     r\   r   __irepeat__c                     d S r   r   r  s     r   r   r     r\   r   __irshift__c                     d S r   r   r  s     r   r   r     r\   r   __isub__c                     d S r   r   r  s     r   r   r     r\   r   __itruediv__c                     d S r   r   r  s     r   r   r     r\   r   __ixor__c                     d S r   r   r  s     r   r   r     r\   r   __le__c                     d S r   r   r  s     r   r   r     r\   r   
__lshift__c                     d S r   r   r  s     r   r   r     r\   r   __lt__c                     d S r   r   r  s     r   r   r     r\   r   
__matmul__c                     d S r   r   r  s     r   r   r     r\   r   __mod__c                     d S r   r   r  s     r   r   r     r\   r   __mul__c                     d S r   r   r  s     r   r   r     r\   r   __ne__c                     d S r   r   r  s     r   r   r     r\   r   __neg__c                     d S r   r   r  s    r   r   r     r   r   __not__c                     d S r   r   r  s    r   r   r     r   r   __or__c                     d S r   r   r  s     r   r   r     r\   r   __pos__c                     d S r   r   r  s    r   r   r     r   r   __pow__c                     d S r   r   r  s     r   r   r     r\   r   
__repeat__c                     d S r   r   r  s     r   r   r     r\   r   
__rshift__c                     d S r   r   r  s     r   r   r     r\   r   __setitem__c                     d S r   r   r  s      r   r   r     r8   r   __setslice__c                     d S r   r   r  r  r   ds       r   r   r     r   r   __sub__c                     d S r   r   r  s     r   r   r     r\   r   __truediv__c                     d S r   r   r  s     r   r   r     r\   r   __xor__c                     d S r   r   r  s     r   r   r     r\   r   _absc                     d S r   r   r   s    r   r   r     r   r   _compare_digestc                     d S r   r   r  s     r   r   r     r\   r   c                     d S r   r   r  s    r   r   r     r   r   addc                     d S r   r   r  s     r   r   r     r\   r   and_c                     d S r   r   r  s     r   r   r     r\   r   
attrgetterc                     d S r   r   )attrr(   s     r   r   r     r   r   concatc                     d S r   r   r  s     r   r   r     r\   r   containsc                     d S r   r   r  s     r   r   r     r\   r   countOfc                     d S r   r   r  s     r   r   r     r\   r   delitemc                     d S r   r   r  s     r   r   r     r\   r   delslicec                     d S r   r   r  s      r   r   r     r8   r   divc                     d S r   r   r  s     r   r   r     r\   r   eqc                     d S r   r   r  s     r   r   r     r\   r   floordivc                     d S r   r   r  s     r   r   r     r\   r   gec                     d S r   r   r  s     r   r   r     r\   r   getitemc                     d S r   r   r  s     r   r   r     r\   r   getslicec                     d S r   r   r  s      r   r   r     r8   r   gtc                     d S r   r   r  s     r   r   r     r\   r   iaddc                     d S r   r   r  s     r   r   r     r\   r   iandc                     d S r   r   r  s     r   r   r     r\   r   iconcatc                     d S r   r   r  s     r   r   r     r\   r   idivc                     d S r   r   r  s     r   r   r     r\   r   	ifloordivc                     d S r   r   r  s     r   r   r     r\   r   ilshiftc                     d S r   r   r  s     r   r   r     r\   r   imatmulc                     d S r   r   r  s     r   r   r     r\   r   imodc                     d S r   r   r  s     r   r   r     r\   r   imulc                     d S r   r   r  s     r   r   r     r\   r   indexc                     d S r   r   r  s    r   r   r     r   r   indexOfc                     d S r   r   r  s     r   r   r     r\   r   invc                     d S r   r   r  s    r   r   r     r   r   invertc                     d S r   r   r  s    r   r   r     r   r   iorc                     d S r   r   r  s     r   r   r     r\   r   ipowc                     d S r   r   r  s     r   r   r     r\   r   irepeatc                     d S r   r   r  s     r   r   r     r\   r   irshiftc                     d S r   r   r  s     r   r   r     r\   r   is_c                     d S r   r   r  s     r   r   r     r\   r   is_notc                     d S r   r   r  s     r   r   r     r\   r   
isCallablec                     d S r   r   r  s    r   r   r     r   r   isMappingTypec                     d S r   r   r  s    r   r   r     r   r   isNumberTypec                     d S r   r   r  s    r   r   r     r   r   isSequenceTypec                     d S r   r   r  s    r   r   r     r   r   isubc                     d S r   r   r  s     r   r   r   	  r\   r   
itemgetterc                     d S r   r   )itemr(   s     r   r   r     r   r   itruedivc                     d S r   r   r  s     r   r   r     r\   r   ixorc                     d S r   r   r  s     r   r   r     r\   r   lec                     d S r   r   r  s     r   r   r     r\   r   length_hintc                     d S r   r   r/   s    r   r   r     r1   r   c                     d S r   r   )r0   r   s     r   r   r     r)   r   lshiftc                     d S r   r   r  s     r   r   r     r\   r   ltc                     d S r   r   r  s     r   r   r     r\   r   matmulc                     d S r   r   r  s     r   r   r     r\   r   methodcallerc                     d S r   r   )rf   r(   r+   s      r   r   r     ru   r   modc                     d S r   r   r  s     r   r   r     r\   r   mulc                     d S r   r   r  s     r   r   r      r\   r   nec                     d S r   r   r  s     r   r   r   "  r\   r   negc                     d S r   r   r  s    r   r   r   $  r   r   not_c                     d S r   r   r  s    r   r   r   &  r   r   or_c                     d S r   r   r  s     r   r   r   (  r\   r   posc                     d S r   r   r  s    r   r   r   *  r   r   c                     d S r   r   r  s     r   r   r   ,  r\   r   c                     d S r   r   r  s     r   r   r   .  r\   r   rshiftc                     d S r   r   r  s     r   r   r   0  r\   r   sequenceIncludesc                     d S r   r   r  s     r   r   r   2  r\   r   setitemc                     d S r   r   r  s      r   r   r   4  r8   r   setslicec                     d S r   r   r  s       r   r   r   6  r   r   subc                     d S r   r   r  s     r   r   r   8  r\   r   truedivc                     d S r   r   r  s     r   r   r   :  r\   r   truthc                     d S r   r   r  s    r   r   r   <  r   r   xorc                     d S r   r   r  s     r   r   r   >  r\   r   c                      d S r   r   )r(   r+   s     r   r   r   C  r   r   c                     d S r   r   )excr   handlers      r   r   r   E  r   r   c                     d S r   r   )r   r  r  s      r   r   r   G  s    d r   c                      d S r   r   funcss    r   r   r   I  r   r   c                     d S r   r   )r   cacherB  s      r   r   r   K  s    D r   )curryexceptsflipjuxtmemoizetoolzc                     d S r   r   r  s    r   r   r   P  r   r   c                     d S r   r   )r   r   r   r   classvals        r   r   r   R  s
     r   )ComposeInstancePropertyztoolz.functoolzc                 b    t          d | j                                        D                       S )z@ Return the number of positional arguments.  ``f(x, y=1)`` has 1c              3   V   K   | ]$}|j         |j        k    |j        |j        u  d V  %dS )r   N)kindPOSITIONAL_OR_KEYWORDr   empty.0r   s     r   	<genexpr>znum_pos_args.<locals>.<genexpr>Y  sU       ) )Q&A33)9')q ) ) ) ) ) )r   )r  
parametersvalues)sigspecs    r   num_pos_argsr  W  s>     ) )',3355 ) ) ) ) ) )r   c                    | dk    rdS t          d |j                                        D                       }|sdS t          |j                                                  d|          }t	          d |D                       S )zA Return the names of position-only arguments if func has **kwargsr   r   c              3   6   K   | ]}|j         |j        k    V  d S r   )r  VAR_KEYWORDr  s     r   r  z'get_exclude_keywords.<locals>.<genexpr>b  s?       ; ; Vq}, ; ; ; ; ; ;r   Nc              3   $   K   | ]}|j         V  d S r   )rf   r  s     r   r  z'get_exclude_keywords.<locals>.<genexpr>g  s$      **A******r   )r    r  r  r   r  )num_pos_onlyr  
has_kwargspos_argss       r   get_exclude_keywordsr  ^  s    q r ; ;%07799; ; ; ; ;J rG&--//00,?H********r   c                 \    	 t          j        |           S # t          t          f$ r Y d S w xY wr   )inspect	signature
ValueError	TypeError)r   s    r   signature_or_specr  j  s?     &&&	"   tts    ++c                 >   t          | t                    rNt          |           dk    r$| \  }}}t          | d         t                    sJ n| \  }}d}t          |          }n"| }t          |          }t	          |          }d}t          ||          }||||z   |fS )a   Convert the signature spec in ``module_info`` to add to ``signatures``

    The input signature spec is one of:
        - ``lambda_func``
        - ``(num_position_args, lambda_func)``
        - ``(num_position_args, lambda_func, keyword_only_args)``

    The output signature spec is:
        ``(num_position_args, lambda_func, keyword_exclude, sigspec)``

    where ``keyword_exclude`` includes keyword only arguments and, if variadic
    keywords is present, the names of position-only argument.  The latter is
    included to support builtins such as ``partial(func, *args, **kwargs)``,
    which allows ``func=`` to be used as a keyword even though it's the name
    of a positional argument.
       r   r   )r   r  r   r  r  r  )sigr  r   keyword_onlyr  keyword_excludes         r   
expand_sigr  q  s    " #u s88q= 	/2,L$c"gu------!$L$L#D))#D))#G,,*<AAO|o=wFFr   c                 .   |                                  D ]\  }}t          |t                    rt          |          }|                                 D ]A\  }}t	          ||          r,t          d |D                       }||t          ||          <   Bd S )Nc              3   4   K   | ]}t          |          V  d S r   )r  r  r  s     r   r  z,create_signature_registry.<locals>.<genexpr>  s(       A ASC A A A A A Ar   )itemsr   rX  r   r   r  r   )module_info
signaturesr   inforf   sigsnew_sigss          r   create_signature_registryr    s    #))++ = =fc"" 	+"6**F**,, 	= 	=JD$vt$$ =  A AD A A AAA4<
764001	== =r   c                     | \  }}}}t          |          |k     rdS |r*t          |          }|D ]}|                    |d           	  ||i | dS # t          $ r Y dS w xY w)z4 Like ``is_valid_args`` for the given signature specFNT)r   rg   popr  )r  r(   r+   r  r   r  r  rf  s           r   check_validr    s    360L$
4yy< u #f# 	# 	#DJJtT""""dft   uus   
A 
A"!A"c                 n    | t           vrdS t           |          }t          fd|D                       S )zC Like ``is_valid_args`` for builtins in our ``signatures`` registryNc              3   :   K   | ]}t          |          V  d S r   )r  r  r  r(   r+   s     r   r  z!_is_valid_args.<locals>.<genexpr>  s/      >>#{3f-->>>>>>r   r  r    r   r(   r+   r  s    `` r   _is_valid_argsr    sF    : tdD>>>>>>>>>>>r   c                     | \  }}}}t          |          |k     rd|t          |          z
  z  }||z   }|r*t          |          }|D ]}|                    |d           t          ||||          S )z6 Like ``is_partial_args`` for the given signature specr   N)r   rg   r  r   )	r  r(   r+   r  r   r  r  padrf  s	            r   check_partialr    s    360L$
4yy< D		12cz #f# 	# 	#DJJtT""""4vw777r   c                 n    | t           vrdS t           |          }t          fd|D                       S )zE Like ``is_partial_args`` for builtins in our ``signatures`` registryNc              3   :   K   | ]}t          |          V  d S r   )r  r  s     r   r  z#_is_partial_args.<locals>.<genexpr>  s/      @@C}S$//@@@@@@r   r  r  s    `` r   _is_partial_argsr    sF    : tdD@@@@@4@@@@@@r   c                 F    |\  }}}}|s|| k    rdS t          | ||          S )NF)r   )r  r  r  r   r  r  s         r   check_arityr    s;    360L$ ,* uAtW%%%r   c                      |t           vrd S t           |         } fd|D             }t          |          rdS t          |          rd S dS )Nc                 0    g | ]}t          |          S r   )r  )r  r  r  s     r   
<listcomp>z_is_arity.<locals>.<listcomp>  s#    222ck!S!!222r   TFr  r   r    )r  r   r  checkss   `   r   	_is_arityr    sc    : tdD2222T222F
6{{ t	V t5r   c                 0    | \  }}}}t          ||          S r   )r   r  r  r   r  r  s        r   check_varargsr    s     360L$tW%%%r   c                     | t           vrd S t           |          }d |D             }t          |          rdS t          |          rd S dS )Nc                 ,    g | ]}t          |          S r   )r  r  s     r   r  z _has_varargs.<locals>.<listcomp>  s     111SmC  111r   TFr  r   r  r  s      r   _has_varargsr    s\    : tdD11D111F
6{{ t	V t5r   c                 8    | \  }}}}|rdS t          ||          S )NT)r   r  s        r   check_keywordsr    s-    360L$ tg&&&r   c                     | t           vrd S t           |          }d |D             }t          |          rdS t          |          rd S dS )Nc                 ,    g | ]}t          |          S r   )r  r  s     r   r  z!_has_keywords.<locals>.<listcomp>  s     222cnS!!222r   TFr  r  s      r   _has_keywordsr    s\    : tdD22T222F
6{{ t	V t5r   c                 0    | \  }}}}t          ||          S r   )r	   r  s        r   check_required_argsr    s     360L$T7+++r   c                     | t           vrd S t           |          }d |D             }|d         t          fd|D                       rS d S )Nc                 ,    g | ]}t          |          S r   )r  r  s     r   r  z&_num_required_args.<locals>.<listcomp>  s!    555$$555r   r   c              3   $   K   | ]
}|k    V  d S r   r   )r  r   vals     r   r  z%_num_required_args.<locals>.<genexpr>  s'      
"
"18
"
"
"
"
"
"r   )r  r   )r   r  valsr  s      @r   _num_required_argsr  	  sj    : tdD55555D
q'C

"
"
"
"T
"
"
""" 
4r   r   )F)rF   rG   )r   r   )r   )r   r   )r   )r   )NNNN)r  rF   rG   )r   Fr   )r   r   NNNTN)r  rO  rG   r   )r   r   )NNN)NNNNN)#__doc__	functoolsr  	itertoolsoperator	importlibr   	functoolzr   r   r   r   r	   builtinsr  rg   updater  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r
     s              # # # # # #9 9 9 9 9 9 9 9 9 9 9 9 9 9 "  | | |	 	| 		 	| 	'') )| 		 	| 	!!))+ +| 	 |" 		 	!|& 	
 
%|* 	##))+ +)|2 	===? ?1|: 	 9|> 		 	=|B 	 A|F 		 	E|J 	 I|N 	$##% %M|R 	   Q|V 	&&
( 
(U|\ 		 	[|b 	 a|f 
***+- -e|j 	$$,,
. 
.i|r 	&&..0 0q|z 
5556
8 
8y|~ 	(') )}|B 	 A|F 	'') )E|L 	 K|R 	"!**, ,Q|X 	 W|\ 	   [|` 	
 
_|d 		 	c|h 	 g|l 	 k|r 		
###$	& 	&q|x 	 w|| 	)(* *{|@ 	)(* *|D 	''
) 
)C|J 		 	I|N 	
 
M|T 	 S|X 		
###$
& 
&W|^ 	0/	1 	1]|b 
 " "a|f 	&&
( 
(e|l 	 k|p 		 	o|t 		 	s|x 		 	w|~ 	?>>@ @}|B 	  &&( (A|J 	 I|P 	('002 2O|V 	 U|Z 	
 
Y|^ 	 ]|b 
***+- -a|f 		 	e|l 	&%' 'k|p 	  &&( (o|x 	 w|| 	$$	& 	&{|B 	   A|H 	 G|N 	&&
( 
(M|T 	 S|X 	@@@B BW|^ 	
 
]|d 	  &&( (c|l 	 	! 	!k|p 
33^DF Fo|t 
   	 s|H |   ((!*H f 
 H   !!# 	===?
 
)+2 2 2 	34 
!!#67	
**H5	7 
!!#67	
**H5	7 
<@G G G 	H
I 
!!#568 	@??	A+    2 <="?H g  	
! 	+*, 	+*, 	('002
 
 
I   0 0 0	
,,,-/ /0 	 ! !0 
$$%' '0 
$$%#' #'0 
(()+ +0 	%$$& &0 	 0  	)(* *0$ 	(') )#0( 
+++,. .'0, 	(') )+00 	(') )/04 	0/
1 
1308 	$#**002 270@ 	 
! 
!?0D 
##^46 6C0H 
&&&') )G0L 
((()+ +K0P 	(') )O0T 	)(* *S0X 	  	" 	"W0^ 
##^46 6]0I d I   	
##[13      r r r r 	 r 	 r 	 r 	 r 	 r 	 r  	 r$ 	 #r( 	 'r, 	 +r0 	 /r4 	 3r8 	 7r< 	 ;r@ 	 ?rD 	 CrH 	 GrL 	 KrP 	 OrT 	 SrX 	 Wr\ 	 [r` 	 _rd 	 crh 	 grl 	 krp 	 ort 	 srx 	 wr| 	 {r@ 	 rD 	 CrH 	 GrL 	 KrP 	 OrT 	 SrX 	 Wr\ 	 [r` 	 _rd 	 crh 	 grl 	 krp 	 ort 	 srx 	 wr| 	 {r@ 	 rD 	 ! !CrH 	 GrL 	 KrP 	 OrT 	
 
SrX 	 Wr\ 		 	[r` 		 	_rd 	
 
crh 	! " "grl 	 krp 	 ort 	 srx 	 wr| 	 {r@ 		 	rD 	 CrH 	 GrL 	 KrP 	 OrT 	 SrX 	 Wr\ 	
 
[r` 	
 
_rd 	 crh 	
 
grl 	 krp 	 ort 	 srx 	
 
wr| 	
 
{r@ 	 rD 	 CrH 		 	GrL 	 KrP 		 	OrT 	
 
SrX 	 Wr\ 	 [r` 		 	_rd 	 crh 	 grl 	 krp 	 ort 	 srx 	
 
wr| 	! " "{r@ 	 rD 	
 
CrH 	 GrL 	!!# #KrR 	 QrV 	 UrZ 	 Yr^ 	+*, ,]rb 		 	arf 		 	erj 	 irn 		 	mrr 	
 
qrv 		 	urz 		 	yr~ 		 	}rB 	 ArF 	 ErJ 	 IrN 	 MrR 	 ! !QrV 		 	UrZ 	 Yr^ 	 ]rb 		 	arH h t	
(()+ 
00013 
2223
5 
 
" 
8889;  G  "&	
! 
      	!"" " " ) ) )	+ 	+ 	+  G G GD 
 +6* = = = =   ? ? ?
8 
8 
8A A A& & &	 	 	& & &
	 	 	' ' '	 	 	, , ,
    r   