o
    NrfKP                     @   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   Z/var/www/html/software/conda/envs/catlas/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   Z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   rJ   globalsr   r   r   r   a   r   c                 C   r
   r   r   rJ   rL   localsr   r   r   r   b   r   Zexecfilec                 C   r
   r   r   )filenamer   r   r   r   d   r   c                 C   r
   r   r   )rO   rL   r   r   r   r   e   r   c                 C   r
   r   r   )rO   rL   rN   r   r   r   r   f   r   filerc                 C   r
   r   r   )r@   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   )rY   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   r@   r   r   r   r   t   r   c                 C   r
   r   r   )r   r@   r   r   r   r   r   u   r   rL   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   )clsri   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   rN   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   re   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   )rx   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   rG   r   r   r   r   r      r   c                 C   r
   r   r   rG   r   stepr   r   r   r      r   	raw_inputc                   C   r
   r   r   r   r   r   r   r      r   c                 C   r
   r   r   rb   r   r   r   r      r   reducec                 C   r
   r   r   r7   rt   r   r   r   r      r   c                 C   r
   r   r   r7   rt   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   )rt   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    r@   rY   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   rF   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   )r@   basesrA   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   ru   r   r   r   r      r   __build_class__   c                 O   r
   r   r   )rs   r@   r   kwdsr   r   r   r      r   )	metaclass
__import__c                 C   r
   r   r   )r@   rL   rN   fromlistlevelr   r   r   r         c                 C   r
   r   r   rI   r   r   r   r      r   c                 C   r
   r   r   rK   r   r   r   r      r   c                 C   r
   r   r   rM   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   )rJ   rO   rS   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   Zarg1Z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   )rP   rS   rT   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endrP   flushprintc                 C   r
   r   r   )Zmycmpr   r   r   r     r   c                 O   r
   r   r   rs   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   rs   r   r   r   r     r   chainc                  G   r
   r   r   r   r   r   r   r     r   combinationsc                 C   r
   r   r   r   rQ   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   )rG   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   rr   r   r   r   r   /  r   islicec                 C   r
   r   r   )r   r   r   r   r   r   1  r   c                 C   r
   r   r   )r   rG   r   r   r   r   r   2  r   c                 C   r
   r   r   )r   rG   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   Z__delslice__c                 C   r
   r   r   r   r   r{   r   r   r   r   Z  r   Z__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   Z__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   Z__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   Z__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   Z
__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   Z__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   Z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   Z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   Z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   Z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   Z
isCallablec                 C   r
   r   r   r   r   r   r   r      r   ZisMappingTypec                 C   r
   r   r   r   r   r   r   r     r   ZisNumberTypec                 C   r
   r   r   r   r   r   r   r     r   Z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   )r@   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   ZsequenceIncludesc                 C   r
   r   r   r   r   r   r   r   1  r   setitemc                 C   r
   r   r   r   r   r   r   r   3  r   Z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   )excrs   handlerr   r   r   r   D  r   c                 C   r
   r   r   )rs   r   r   r   r   r   r   F  r   c                  G   r
   r   r   funcsr   r   r   r   H  r   c                 C   r
   r   r   )rs   cacher   r   r   r   r   J  r   )curryZexceptsflipZjuxtmemoizeZtoolzc                 C   r
   r   r   rX  r   r   r   r   O  r   c                 C   r
   r   r   )r   r   r   r   Zclassvalr   r   r   r   Q  r   )ZComposeZ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   rg  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   )r^  VAR_KEYWORDra  r   r   r   rc  a  s    z'get_exclude_keywords.<locals>.<genexpr>Nc                 s   s    | ]}|j V  qd S r   )r@   ra  r   r   r   rc  f  s    )r   rd  re  ro   r   )num_pos_onlyrf  Z
has_kwargsZpos_argsr   r   r   get_exclude_keywords]  s   rj  c              	   C   s&   zt | W S  ttfy   Y d S w r   )inspect	signature
ValueError	TypeError)rs   r   r   r   signature_or_speci  s
   ro  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.
       rR   r   )rh   r   rn   ro  rg  rj  )sigri  rs   keyword_onlyrf  keyword_excluder   r   r   
expand_sigp  s   



rt  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   )rt  rb  rq  r   r   r   rc        z,create_signature_registry.<locals>.<genexpr>)itemsrh   r   r   r]   r   r\   )module_info
signaturesr   infor@   sigsZ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)rn   rA   poprn  )rq  r   r   ri  rs   rs  rf  r?  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~  ru  rU  r   r   rc        z!_is_valid_args.<locals>.<genexpr>ry  r   rs   r   r   r{  r   rU  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)rn   rA   r}  r   )	rq  r   r   ri  rs   rs  rf  padr?  r   r   r   check_partial  s   r  c                    r  )zE Like ``is_partial_args`` for builtins in our ``signatures`` registryNc                 3   r  r   )r  ru  rU  r   r   rc    r  z#_is_partial_args.<locals>.<genexpr>r  r  r   rU  r   _is_partial_args  r  r  c                 C   s(   |\}}}}|s|| krdS t | ||S )NF)r   )r   rq  ri  rs   rs  rf  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  ru  r   r   r   
<listcomp>  s    z_is_arity.<locals>.<listcomp>TFry  r   r   )r   rs   r{  checksr   r  r   	_is_arity  s   r  c                 C      | \}}}}t ||S r   )r   rq  ri  rs   rs  rf  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  ru  r   r   r   r        z _has_varargs.<locals>.<listcomp>TFr  rs   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  ru  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  ru  r   r   r   r    r  z&_num_required_args.<locals>.<listcomp>r   c                 3   s    | ]}| kV  qd S r   r   ra  valr   r   rc    rv  z%_num_required_args.<locals>.<genexpr>)ry  r   )rs   r{  valsr   r  r   _num_required_args  s   r  r   )F)r+   r,   )r   r   )r   )rQ   rR   )rW   )rd   )NNNN)r   r+   r,   )r   FrR   )rQ   rR   NNNTN)r   r   r,   r   )r   r   )NNN)NNNNN)#__doc__	functoolsrk  	itertoolsoperator	importlibr   Z	functoolzr   r   r   r   r   builtinsrx  rA   updaterg  rj  ro  rt  ry  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	"
