o
    SiKP                     @   s  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d gd	d
d gddd dd gddd gddd dd dd gddd gddd gdd;ddgddd dd dd gdd d d!d d<d$dgd%d&d gd'd(d gd)d*d gd+d,d gd-d.d gd/d=d0dgd1d2d gd3d4d d5d gd6d7d d8d gd9d:d gd;dd>d<dfgd=d>d d?d d@d gdAdBd dCd dDd gdEdd?dHdfgdIdJd gdKd@dMdgdNdOd dPd gdQdRd dSd gdTdUd dVd gdWdXd gdYdZd gd[d\d gd]d^d gd_d`d gdadbd dcd gddd>dedddAdgdfgdhdid gdjdkd gdldmd gdndod dpd gdqdrd gdsdtd dud gdvdwd gdxd>dydddAdzdfgd{d|d gd}dd~d fgddd dd gddd gddd gddd gddd dd gddBddgddd dd dd gddd dd gddd dd gddd gddd gddd gddd>ddfgddd dd gddd gddd dd dd gddd gddd dd gddd dd gddd dd gddd dd gddd gddd dCddgddd dd gddd dd dd gddd gdddd dfgdd	dBddfgee< dd dd dd gee d< ee jdd gdd dd d<ddgd	GdDddfgddd dfddd dfgddd dfddd dfgd	dEddfgddd dfgdFddgd ddd dfgee d< eddd fgdd gdd gdd dd gdee< ed:i dddGddfgddd gdddd fgdddd fgdddd fgddHddgddd gddd gddd gdddGddfgddd gd dd gddd gddd dd dd gdd	d gd
ddd dfgddd gddd>ddfgdddd dfgddd>ddfgddd gddd gddd dd gdddd dfgee< ed:i dd d gd!d"d gd#d$d gd%d&d gd'd(d gd)d*d gd+d,d gd-d.d gd/d0d gd1d2d gd3d4d gd5d6d gd7d8d gd9d:d gd;d<d gd=d>d gd?d@d gdAdBd gdCdDd gdEdFd gdGdHd gdIdJd gdKdLd gdMdNd gdOdPd gdQdRd gdSdTd gdUdVd gdWdXd gdYdZd gd[d\d gd]d^d gd_d`d gdadbd gdcddd gdedfd gdgdhd gdidjd gdkdld gdmdnd gdodpd gdqdrd gdsdtd gdudvd gdwdxd gdydzd gd{d|d gd}d~d gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gdĐdd gdƐdd gdȐdd gdʐdd gd̐dd gdΐdd gdАdd gdҐdd gdԐdd gd֐dd gdؐdd gdڐdd gdܐdd gdސdd gddd gddd dd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gddd gdd d gddd gddd gddd gddd gd	d
d gddd gee< eddd fgddGddfgddIddfgddd fgddIddfgded< eddd fgd	dJddfgded< dd Zdd Zdd Zdd Zi Zeefd d!Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Z d6d7 Z!d8d9 Z"dS (K  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                 C      d S N xr   r   E/home/ubuntu/.local/lib/python3.10/site-packages/toolz/_signatures.py<lambda>-       r   allc                 C   r
   r   r   iterabler   r   r   r   /   r   anextc                 C   r
   r   r   )	aiteratorr   r   r   r   1   r   c                 C   r
   r   r   )r   defaultr   r   r   r   2   r   anyc                 C   r
   r   r   r   r   r   r   r   4   r   applyc                 C   r
   r   r   objectr   r   r   r   6   r   c                 C   r
   r   r   )r   argsr   r   r   r   7   r   c                 C   r
   r   r   )r   r   kwargsr   r   r   r   8   r   asciic                 C   r
   r   r   objr   r   r   r   :   r   binc                 C   r
   r   r   numberr   r   r   r   <   r   boolFc                 C   r
   r   r   r   r   r   r   r   >   r   bufferc                 C   r
   r   r   r   r   r   r   r   @   r   c                 C   r
   r   r   )r   offsetr   r   r   r   A   r   c                 C   r
   r   r   )r   r&   sizer   r   r   r   B   r   	bytearrayc                   C   r
   r   r   r   r   r   r   r   D   r   c                 C   r
   r   r   intr   r   r   r   E   r   utf8strictc                 C   r
   r   r   stringencodingerrorsr   r   r   r   F   r   callablec                 C   r
   r   r   r   r   r   r   r   H   r   chrc                 C   r
   r   r   ir   r   r   r   J   r   classmethodc                 C   r
   r   r   functionr   r   r   r   L   r   cmpc                 C   r
   r   r   r   yr   r   r   r   N   r   coercec                 C   r
   r   r   r9   r   r   r   r   P   r   complexc                 C   r
   r   r   )realimagr   r   r   r   R   r   delattrc                 C   r
   r   r   r    namer   r   r   r   T   r   dictc                  K   r
   r   r   )r   r   r   r   r   V   r   c                 K   r
   r   r   )mappingr   r   r   r   r   W   r   dirc                   C   r
   r   r   r   r   r   r   r   Y   r   c                 C   r
   r   r   r   r   r   r   r   Z   r   divmodc                 C   r
   r   r   r9   r   r   r   r   \   r   	enumeratec                 C   r
   r   r   r   startr   r   r   r   ^   r   evalc                 C   r
   r   r   sourcer   r   r   r   `   r   c                 C   r
   r   r   rK   globalsr   r   r   r   a   r   c                 C   r
   r   r   rK   rM   localsr   r   r   r   b   r   execfilec                 C   r
   r   r   )filenamer   r   r   r   d   r   c                 C   r
   r   r   )rQ   rM   r   r   r   r   e   r   c                 C   r
   r   r   )rQ   rM   rO   r   r   r   r   f   r   filerc                 C   r
   r   r   )rA   mode	bufferingr   r   r   r   h   r   filterc                 C   r
   r   r   )r7   r   r   r   r   r   j   r   float        c                 C   r
   r   r   r   r   r   r   r   l   r   formatc                 C   r
   r   r   )valuer   r   r   r   n   r   c                 C   r
   r   r   )r[   format_specr   r   r   r   o   r   	frozensetc                   C   r
   r   r   r   r   r   r   r   q   r   c                 C   r
   r   r   r   r   r   r   r   r   r   getattrc                 C   r
   r   r   )r   rA   r   r   r   r   t   r   c                 C   r
   r   r   )r   rA   r   r   r   r   r   u   r   rM   c                   C   r
   r   r   r   r   r   r   r   w   r   hasattrc                 C   r
   r   r   r@   r   r   r   r   y   r   hashc                 C   r
   r   r   r   r   r   r   r   {   r   hexc                 C   r
   r   r   r"   r   r   r   r   }   r   idc                 C   r
   r   r   r   r   r   r   r      r   inputc                   C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   promptr   r   r   r      r   r*   c                 C   r
   r   r   r   r   r   r   r      r   
   c                 C   r
   r   r   r   baser   r   r   r      r   internc                 C   r
   r   r   )r.   r   r   r   r      r   
isinstancec                 C   r
   r   r   )r    class_or_tupler   r   r   r      r   
issubclassc                 C   r
   r   r   )clsrk   r   r   r   r      r   iterc                 C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   )r1   sentinelr   r   r   r      r   lenc                 C   r
   r   r   r   r   r   r   r      r   listc                   C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r      r   rO   c                   C   r
   r   r   r   r   r   r   r      r   longc                 C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   rg   r   r   r   r      r   mapc                 G   r
   r   r   funcsequence	iterablesr   r   r   r      r   
memoryviewc                 C   r
   r   r   r   r   r   r   r      r   nextc                 C   r
   r   r   )iteratorr   r   r   r      r   c                 C   r
   r   r   )rz   r   r   r   r   r      r   r   c                   C   r
   r   r   r   r   r   r   r      r   octc                 C   r
   r   r   r"   r   r   r   r      r   ordc                 C   r
   r   r   )cr   r   r   r      r   powc                 C   r
   r   r   r9   r   r   r   r      r   c                 C   r
   r   r   )r   r:   zr   r   r   r      r   propertyc                 C   r
   r   r   )fgetfsetfdeldocr   r   r   r      r   rangec                 C   r
   r   r   stopr   r   r   r      r   c                 C   r
   r   r   rH   r   r   r   r   r      r   c                 C   r
   r   r   rH   r   stepr   r   r   r      r   	raw_inputc                   C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   rd   r   r   r   r      r   reducec                 C   r
   r   r   r7   rv   r   r   r   r      r   c                 C   r
   r   r   r7   rv   initialr   r   r   r      r   reloadc                 C   r
   r   r   )moduler   r   r   r      r   reprc                 C   r
   r   r   r   r   r   r   r      r   reversedc                 C   r
   r   r   )rv   r   r   r   r      r   roundc                 C   r
   r   r   )r#   ndigitsr   r   r   r      r   setc                   C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r      r   setattrc                 C   r
   r   r   )r    rA   r[   r   r   r   r      r   slicec                 C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r      r   staticmethodc                 C   r
   r   r   r6   r   r   r   r      r   sumc                 C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   rG   r   r   r   r      r   superc                 C   r
   r   r   )typer   r   r   r      r   c                 C   r
   r   r   )r   r    r   r   r   r      r   tuplec                   C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r      r   r   c                 C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   )rA   basesrB   r   r   r   r      r   unichrc                 C   r
   r   r   r3   r   r   r   r      r   unicodec                 C   r
   r   r   r   r   r   r   r      r    c                 C   r
   r   r   r-   r   r   r   r      r   varsc                   C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r      r   xrangec                 C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r      r   zipc                  G   r
   r   r   rw   r   r   r   r      r   __build_class__   c                 O   r
   r   r   )ru   rA   r   kwdsr   r   r   r      r   )	metaclass
__import__c                 C   r
   r   r   )rA   rM   rO   fromlistlevelr   r   r   r         c                 C   r
   r   r   rJ   r   r   r   r      r   c                 C   r
   r   r   rL   r   r   r   r      r   c                 C   r
   r   r   rN   r   r   r   r      r   execc                  O   r
   r   r   )r   kwsr   r   r   r      r   c                   C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   r)   r   r   r   r      r   c                 C   r
   r   r   r-   r   r   r   r      r   c                 C   r
   r   r   )rK   rQ   rU   flagsdont_inheritoptimizer   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r      r   )r   keyc                 G   r
   r   r   arg1arg2r   r   r   r   r      r   )r   c                 C   r
   r   r   r   r   r   r   r      r   c                 G   r
   r   r   r   r   r   r   r      r   Tc                 C   r
   r   r   )rR   rU   rV   r/   r0   newlineclosefdopenerr   r   r   r      r   c                 C   r
   r   r   r   r   r   r   r     r   )r   reverseutfc                 C   r
   r   r   )r   r/   r0   r   r   r   r     r   )
breakpointbytescompilemaxminopensortedstrc                  G   r
   r   r   )r   r   r   r   r     r   )sependrR   flushprintc                 C   r
   r   r   )mycmpr   r   r   r     r   c                 O   r
   r   r   ru   r   r   r   r   r   r     r   c                 O   r
   r   r   r   r   r   r   r     r   c                 C   r
   r   r   r   r   r   r   r     r   c                 C   r
   r   r   r   r   r   r   r     r   )
cmp_to_keypartialpartialmethodr   
accumulatec                 C   r
   r   r   )r   ru   r   r   r   r     r   chainc                  G   r
   r   r   r   r   r   r   r     r   combinationsc                 C   r
   r   r   r   rS   r   r   r   r     r   combinations_with_replacementc                 C   r
   r   r   r   r   r   r   r     r   compressc                 C   r
   r   r   )data	selectorsr   r   r   r     r   countc                 C   r
   r   r   )rH   r   r   r   r   r   !  r   cyclec                 C   r
   r   r   r   r   r   r   r   #  r   	dropwhilec                 C   r
   r   r   	predicater   r   r   r   r   %  r   filterfalsec                 C   r
   r   r   r   r   r   r   r   '  r   groupbyc                 C   r
   r   r   )r   r   r   r   r   r   )  r   ifilterc                 C   r
   r   r   r   r   r   r   r   +  r   ifilterfalsec                 C   r
   r   r   r   r   r   r   r   -  r   imapc                 G   r
   r   r   rt   r   r   r   r   /  r   islicec                 C   r
   r   r   )r   r   r   r   r   r   1  r   c                 C   r
   r   r   )r   rH   r   r   r   r   r   2  r   c                 C   r
   r   r   )r   rH   r   r   r   r   r   r   3  r   izipc                  G   r
   r   r   r   r   r   r   r   5  r   izip_longestc                  G   r
   r   r   r   r   r   r   r   7  r   )	fillvaluepairwisec                 C   r
   r   r   r   r   r   r   r   9  r   permutationsc                 C   r
   r   r   r   r   r   r   r   ;  r   productc                  G   r
   r   r   r   r   r   r   r   =  r   )repeatr   c                 C   r
   r   r   )r   timesr   r   r   r   ?  r   starmapc                 C   r
   r   r   r   r   r   r   r   A  r   	takewhilec                 C   r
   r   r   r   r   r   r   r   C  r   teec                 C   r
   r   r   r   r   r   r   r   E  r   c                 C   r
   r   r   )r   nr   r   r   r   F  r   zip_longestc                  G   r
   r   r   r   r   r   r   r   H  r   __abs__c                 C   r
   r   r   ar   r   r   r   N  r   __add__c                 C   r
   r   r   r   br   r   r   r   P  r   __and__c                 C   r
   r   r   r   r   r   r   r   R  r   
__concat__c                 C   r
   r   r   r   r   r   r   r   T  r   __contains__c                 C   r
   r   r   r   r   r   r   r   V  r   __delitem__c                 C   r
   r   r   r   r   r   r   r   X  r   __delslice__c                 C   r
   r   r   r   r   r}   r   r   r   r   Z  r   __div__c                 C   r
   r   r   r   r   r   r   r   \  r   __eq__c                 C   r
   r   r   r   r   r   r   r   ^  r   __floordiv__c                 C   r
   r   r   r   r   r   r   r   `  r   __ge__c                 C   r
   r   r   r   r   r   r   r   b  r   __getitem__c                 C   r
   r   r   r   r   r   r   r   d  r   __getslice__c                 C   r
   r   r   r   r   r   r   r   f  r   __gt__c                 C   r
   r   r   r   r   r   r   r   h  r   __iadd__c                 C   r
   r   r   r   r   r   r   r   j  r   __iand__c                 C   r
   r   r   r   r   r   r   r   l  r   __iconcat__c                 C   r
   r   r   r   r   r   r   r   n  r   __idiv__c                 C   r
   r   r   r   r   r   r   r   p  r   __ifloordiv__c                 C   r
   r   r   r   r   r   r   r   r  r   __ilshift__c                 C   r
   r   r   r   r   r   r   r   t  r   __imatmul__c                 C   r
   r   r   r   r   r   r   r   v  r   __imod__c                 C   r
   r   r   r   r   r   r   r   x  r   __imul__c                 C   r
   r   r   r   r   r   r   r   z  r   	__index__c                 C   r
   r   r   r   r   r   r   r   |  r   __inv__c                 C   r
   r   r   r   r   r   r   r   ~  r   
__invert__c                 C   r
   r   r   r   r   r   r   r     r   __ior__c                 C   r
   r   r   r   r   r   r   r     r   __ipow__c                 C   r
   r   r   r   r   r   r   r     r   __irepeat__c                 C   r
   r   r   r   r   r   r   r     r   __irshift__c                 C   r
   r   r   r   r   r   r   r     r   __isub__c                 C   r
   r   r   r   r   r   r   r     r   __itruediv__c                 C   r
   r   r   r   r   r   r   r     r   __ixor__c                 C   r
   r   r   r   r   r   r   r     r   __le__c                 C   r
   r   r   r   r   r   r   r     r   
__lshift__c                 C   r
   r   r   r   r   r   r   r     r   __lt__c                 C   r
   r   r   r   r   r   r   r     r   
__matmul__c                 C   r
   r   r   r   r   r   r   r     r   __mod__c                 C   r
   r   r   r   r   r   r   r     r   __mul__c                 C   r
   r   r   r   r   r   r   r     r   __ne__c                 C   r
   r   r   r   r   r   r   r     r   __neg__c                 C   r
   r   r   r   r   r   r   r     r   __not__c                 C   r
   r   r   r   r   r   r   r     r   __or__c                 C   r
   r   r   r   r   r   r   r     r   __pos__c                 C   r
   r   r   r   r   r   r   r     r   __pow__c                 C   r
   r   r   r   r   r   r   r     r   
__repeat__c                 C   r
   r   r   r   r   r   r   r     r   
__rshift__c                 C   r
   r   r   r   r   r   r   r     r   __setitem__c                 C   r
   r   r   r   r   r   r   r     r   __setslice__c                 C   r
   r   r   r   r   r}   dr   r   r   r     r   __sub__c                 C   r
   r   r   r   r   r   r   r     r   __truediv__c                 C   r
   r   r   r   r   r   r   r     r   __xor__c                 C   r
   r   r   r   r   r   r   r     r   _absc                 C   r
   r   r   r   r   r   r   r     r   _compare_digestc                 C   r
   r   r   r   r   r   r   r     r   c                 C   r
   r   r   r   r   r   r   r     r   addc                 C   r
   r   r   r   r   r   r   r     r   and_c                 C   r
   r   r   r   r   r   r   r     r   
attrgetterc                 G   r
   r   r   )attrr   r   r   r   r     r   concatc                 C   r
   r   r   r   r   r   r   r     r   containsc                 C   r
   r   r   r   r   r   r   r     r   countOfc                 C   r
   r   r   r   r   r   r   r     r   delitemc                 C   r
   r   r   r   r   r   r   r     r   delslicec                 C   r
   r   r   r   r   r   r   r     r   divc                 C   r
   r   r   r   r   r   r   r     r   eqc                 C   r
   r   r   r   r   r   r   r     r   floordivc                 C   r
   r   r   r   r   r   r   r     r   gec                 C   r
   r   r   r   r   r   r   r     r   getitemc                 C   r
   r   r   r   r   r   r   r     r   getslicec                 C   r
   r   r   r   r   r   r   r     r   gtc                 C   r
   r   r   r   r   r   r   r     r   iaddc                 C   r
   r   r   r   r   r   r   r     r   iandc                 C   r
   r   r   r   r   r   r   r     r   iconcatc                 C   r
   r   r   r   r   r   r   r     r   idivc                 C   r
   r   r   r   r   r   r   r     r   	ifloordivc                 C   r
   r   r   r   r   r   r   r     r   ilshiftc                 C   r
   r   r   r   r   r   r   r     r   imatmulc                 C   r
   r   r   r   r   r   r   r     r   imodc                 C   r
   r   r   r   r   r   r   r     r   imulc                 C   r
   r   r   r   r   r   r   r     r   indexc                 C   r
   r   r   r   r   r   r   r     r   indexOfc                 C   r
   r   r   r   r   r   r   r     r   invc                 C   r
   r   r   r   r   r   r   r     r   invertc                 C   r
   r   r   r   r   r   r   r     r   iorc                 C   r
   r   r   r   r   r   r   r     r   ipowc                 C   r
   r   r   r   r   r   r   r     r   irepeatc                 C   r
   r   r   r   r   r   r   r     r   irshiftc                 C   r
   r   r   r   r   r   r   r     r   is_c                 C   r
   r   r   r   r   r   r   r     r   is_notc                 C   r
   r   r   r   r   r   r   r     r   
isCallablec                 C   r
   r   r   r   r   r   r   r      r   isMappingTypec                 C   r
   r   r   r   r   r   r   r     r   isNumberTypec                 C   r
   r   r   r   r   r   r   r     r   isSequenceTypec                 C   r
   r   r   r   r   r   r   r     r   isubc                 C   r
   r   r   r   r   r   r   r     r   
itemgetterc                 G   r
   r   r   )itemr   r   r   r   r   
  r   itruedivc                 C   r
   r   r   r   r   r   r   r     r   ixorc                 C   r
   r   r   r   r   r   r   r     r   lec                 C   r
   r   r   r   r   r   r   r     r   length_hintc                 C   r
   r   r   r   r   r   r   r     r   c                 C   r
   r   r   )r    r   r   r   r   r     r   lshiftc                 C   r
   r   r   r   r   r   r   r     r   ltc                 C   r
   r   r   r   r   r   r   r     r   matmulc                 C   r
   r   r   r   r   r   r   r     r   methodcallerc                 O   r
   r   r   )rA   r   r   r   r   r   r     r   modc                 C   r
   r   r   r   r   r   r   r     r   mulc                 C   r
   r   r   r   r   r   r   r     r   nec                 C   r
   r   r   r   r   r   r   r   !  r   negc                 C   r
   r   r   r   r   r   r   r   #  r   not_c                 C   r
   r   r   r   r   r   r   r   %  r   or_c                 C   r
   r   r   r   r   r   r   r   '  r   posc                 C   r
   r   r   r   r   r   r   r   )  r   c                 C   r
   r   r   r   r   r   r   r   +  r   c                 C   r
   r   r   r   r   r   r   r   -  r   rshiftc                 C   r
   r   r   r   r   r   r   r   /  r   sequenceIncludesc                 C   r
   r   r   r   r   r   r   r   1  r   setitemc                 C   r
   r   r   r   r   r   r   r   3  r   setslicec                 C   r
   r   r   r#  r   r   r   r   5  r   subc                 C   r
   r   r   r   r   r   r   r   7  r   truedivc                 C   r
   r   r   r   r   r   r   r   9  r   truthc                 C   r
   r   r   r   r   r   r   r   ;  r   xorc                 C   r
   r   r   r   r   r   r   r   =  r   c                  O   r
   r   r   r   r   r   r   r   r   B  r   c                 C   r
   r   r   )excru   handlerr   r   r   r   D  r   c                 C   r
   r   r   )ru   r   r   r   r   r   r   F  r   c                  G   r
   r   r   funcsr   r   r   r   H  r   c                 C   r
   r   r   )ru   cacher   r   r   r   r   J  r   )curryexceptsflipjuxtmemoizetoolzc                 C   r
   r   r   rn  r   r   r   r   O  r   c                 C   r
   r   r   )r   r   r   r   classvalr   r   r   r   Q  r   )ComposeInstancePropertyztoolz.functoolzc                 C   s   t dd | j D S )z@ Return the number of positional arguments.  ``f(x, y=1)`` has 1c                 s   s,    | ]}|j |jkr|j|ju rd V  qdS )r   N)kindPOSITIONAL_OR_KEYWORDr   empty.0r   r   r   r   	<genexpr>X  s    znum_pos_args.<locals>.<genexpr>)r   
parametersvalues)sigspecr   r   r   num_pos_argsV  s   r  c                 C   sT   | dkrdS t dd |j D }|sdS t|j d|  }tdd |D S )zA Return the names of position-only arguments if func has **kwargsr   r   c                 s   s    | ]	}|j |jkV  qd S r   )rz  VAR_KEYWORDr}  r   r   r   r  a  s    z'get_exclude_keywords.<locals>.<genexpr>Nc                 s   s    | ]}|j V  qd S r   )rA   r}  r   r   r   r  f  s    )r   r  r  rq   r   )num_pos_onlyr  
has_kwargspos_argsr   r   r   get_exclude_keywords]  s   r  c              	   C   s&   zt | W S  ttfy   Y d S w r   )inspect	signature
ValueError	TypeError)ru   r   r   r   signature_or_speci  s
   r  c                 C   s|   t | tr%t| dkr| \}}}t | d tsJ n| \}}d}t|}n| }t|}t|}d}t||}|||| |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.
       rT   r   )rj   r   rp   r  r  r  )sigr  ru   keyword_onlyr  keyword_excluder   r   r   
expand_sigp  s   



r  c                 C   sd   |   D ]+\}}t|trt|}|  D ]\}}t||r.tdd |D }||t||< qqd S )Nc                 s   s    | ]}t |V  qd S r   )r  r~  r  r   r   r   r        z,create_signature_registry.<locals>.<genexpr>)itemsrj   r   r   r_   r   r^   )module_info
signaturesr   inforA   sigsnew_sigsr   r   r   create_signature_registry  s   

r  c                 C   sh   | \}}}}t ||k rdS |rt|}|D ]}||d qz
||i | W dS  ty3   Y dS w )z4 Like ``is_valid_args`` for the given signature specFNT)rp   rB   popr  )r  r   r   r  ru   r  r  rS  r   r   r   check_valid  s   r  c                    ,   | t vrdS t |  }t fdd|D S )zC Like ``is_valid_args`` for builtins in our ``signatures`` registryNc                 3       | ]	}t | V  qd S r   )r  r  rk  r   r   r        z!_is_valid_args.<locals>.<genexpr>r  r   ru   r   r   r  r   rk  r   _is_valid_args     r  c           	      C   s`   | \}}}}t ||k rd|t |  }|| }|r)t|}|D ]}||d q t||||S )z6 Like ``is_partial_args`` for the given signature specr   N)rp   rB   r  r   )	r  r   r   r  ru   r  r  padrS  r   r   r   check_partial  s   r  c                    r  )zE Like ``is_partial_args`` for builtins in our ``signatures`` registryNc                 3   r  r   )r  r  rk  r   r   r    r  z#_is_partial_args.<locals>.<genexpr>r  r  r   rk  r   _is_partial_args  r  r  c                 C   s(   |\}}}}|s|| krdS t | ||S )NF)r   )r   r  r  ru   r  r  r   r   r   check_arity  s   r  c                    sB   |t vrd S t | } fdd|D }t|rdS t|rd S dS )Nc                    s   g | ]}t  |qS r   )r  r  r   r   r   
<listcomp>  s    z_is_arity.<locals>.<listcomp>TFr  r   r   )r   ru   r  checksr   r  r   	_is_arity  s   r  c                 C      | \}}}}t ||S r   )r   r  r  ru   r  r  r   r   r   check_varargs     
r  c                 C   >   | t vrd S t |  }dd |D }t|rdS t|rd S dS )Nc                 S      g | ]}t |qS r   )r  r  r   r   r   r        z _has_varargs.<locals>.<listcomp>TFr  ru   r  r  r   r   r   _has_varargs     r  c                 C   s   | \}}}}|r
dS t ||S )NT)r   r  r   r   r   check_keywords  s   
r  c                 C   r  )Nc                 S   r  r   )r  r  r   r   r   r    r  z!_has_keywords.<locals>.<listcomp>TFr  r  r   r   r   _has_keywords  r  r  c                 C   r  r   )r   r  r   r   r   check_required_args  r  r  c                    sH   | t vrd S t |  }dd |D }|d  t fdd|D r" S d S )Nc                 S   r  r   )r  r  r   r   r   r    r  z&_num_required_args.<locals>.<listcomp>r   c                 3   s    | ]}| kV  qd S r   r   r}  valr   r   r    r  z%_num_required_args.<locals>.<genexpr>)r  r   )ru   r  valsr   r  r   _num_required_args  s   r  r   )F)r+   r,   )r   r   )r   )rS   rT   )rY   )rf   )NNNN)r   r+   r,   )r   FrT   )rS   rT   NNNTN)r   r   r,   r   )r   r   )NNN)NNNNN)#__doc__	functoolsr  	itertoolsoperator	importlibr   	functoolzr   r   r   r   r   builtinsr  rB   updater  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   sl   
	

!#%
')+.1359=?
ACFILNPRTV
Y\^`begj
lo
qsvxz|
     	                    "  %  (  +  -
  0  3  7  9  ;  ?









 "$&(*,.037
 "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~        	                        !  #  %  '  )  +  -  /  1  3  5  7  9  ;  =  ?  A  C  E  G  J  L  N  P  R  T  V  X  Z  \  ^  `  b  d  f  h  j  l  n  p  r  u	"
