U kf"@sdZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZe jdkZe jdkZe jdkZe jdkZe jdkZedkZedkZe j dZ!e j dZ"de#$kZ%e j&dkZ'e(eZ)ej*Z+edddZ,Gddde j-Z.d dd!d"d#Z/erd$d%d&d'Z0nd$d%d(d'Z0e j1serdd)l2m3Z4nddl4Z4e j1serej5Z6nd*d*d*d+d,d-Z6ere7Z8ne9Z:dd.l;md5d6d7d8d9Z?d6d5d7d:d;Z@d6d5d5d<d=d>ZAd?d@ZBd[dAdBZCddddCiieDdDdEdFdEdGdEdHdEeCf dIdJdJdKdLdMdNdOdOdOdPdPdPd5dQdRdSZEdTdUdVdWdXZFdTdUdVdYdZZGdS)\z1Handle Python version/platform incompatibilities.) annotationsN)Any)Callable)Dict)Iterable)List)Mapping)Optional)Sequence)Set)Tuple)Type)TypeVar) )r )r )r )rPyPyCPythonwindarwinZaarchl_T_coT) covariantc@sFeZdZUded<ded<ded<ded<ded<d ed <d ed <d S) FullArgSpec List[str]args Optional[str]varargsvarkwzOptional[Tuple[Any, ...]]defaults kwonlyargszOptional[Dict[str, Any]]kwonlydefaultszDict[str, Any]rN)__name__ __module__ __qualname____annotations__r(r(F/opt/hc_python/lib64/python3.8/site-packages/sqlalchemy/util/compat.pyr7s rzCallable[..., Any])funcreturnc Cst|r|j}t|s(t|d|j}t|sFt|d|j}|j}|j }t |d|}t ||||}||7}d}|j tj @r|j|}|d}d}|j tj @r|j|}t||||j||j|jS)z9Fully vendored version of getfullargspec from Python 3.3.z is not a Python functionz is not a code objectN)inspectismethod__func__ isfunction TypeError__code__iscode co_argcount co_varnamesco_kwonlyargcountlistco_flags CO_VARARGSCO_VARKEYWORDSr __defaults____kwdefaults__r') r*conargsnamesnkwargsrr"rr r(r(r)inspect_getfullargspecAs:       rAr)r+cCs tjddS)NF)Zusedforsecurityhashlibmd5r(r(r(r)md5_not_for_securityjsrEcCstSNrBr(r(r(r)rEos)metadatadict)abr+cCs|}|||SrF)copyupdaterIrJr(r(r) dict_union~s rN) AsyncIteratorcs^t|tstdt|t|j}z||IdHWStk rX|tkrP|YSXdS)z9vendored from https://github.com/python/cpython/pull/8895z%anext expected an AsyncIterator, got N) isinstancerOr1type __anext__StopAsyncIteration _NOT_PROVIDED)Zasync_iteratordefaultZanxtr(r(r)anext_s   rVcCs4t}tjst|dr$|j|dS||dSdS)Nselect)groupr()importlib_metadata entry_pointstyping TYPE_CHECKINGhasattrrWget)rXepr(r(r)importlib_metadata_gets r`cCs |dS)Nzlatin-1)encode)sr(r(r)rJsrJstrbytes)xr+cCst|dSNascii)base64 b64decoderarer(r(r)risricCst|dSrf)rh b64encodedecoderjr(r(r)rksrk)textencodingr+cCs|j|ddS)Nbackslashreplace)errors)rl)rmrnr(r(r)decode_backslashreplacesrqcCs||k||kSrFr(rMr(r(r)cmpsrrcCst|tr|St|dddkr6t|ddddSt|trh|jd|fkrXt|jS|jd|jSt|tj rt|ddSt|ddS) zvendored from python 3.7r%Nr[ztyping.~builtins.) rPrcgetattrreprreplacerQr%r&r[r) annotation base_moduler(r(r)_formatannotations    r|r(cCsd|S)N*r(namer(r(r)rcCsd|S)Nz**r(r~r(r(r)rrcCs dt|S)N=)rx)valuer(r(r)rrcCs dt|S)Nz -> )rc)rmr(r(r)rrrrzOptional[Sequence[Any]]zOptional[Sequence[str]]zOptional[Mapping[str, Any]]zMapping[str, Any]zCallable[[str], str]zCallable[[Any], str])rrr r!r"r#r formatarg formatvarargs formatvarkw formatvalue formatreturnsformatannotationr+c s8|pi}pifdd} g}|r:t|t|}nd}t|D]:\}}| |}|rv||krv|| |||}||qF|dk r||| |n|r|d|r|D]2}| |}|r||kr|| ||7}||q|dk r|| | |dd|d}d kr4|| d 7}|S) a>Copy formatargspec from python 3.7 standard library. Python 3 has deprecated formatargspec and requested that Signature be used instead, however this requires a full reimplementation of formatargspec() in terms of creating Parameter objects and such. Instead of introducing all the object-creation overhead and having to reinvent from scratch, just copy their compatibility routine. Ultimately we would need to rewrite our "decorator" routine completely which is not really worth it right now, until all Python 2.x support is dropped. cs(|}|kr$|d|7}|S)Nz: r()argresultrrrr(r)formatargandannotationsz5inspect_formatargspec..formatargandannotationNr}(z, )r+)len enumerateappendjoin)rrr r!r"r#rrrrrrrrspecs firstdefaultirspec kwonlyargrr(rr)inspect_formatargspecs8       rz Type[Any]z Iterable[dataclasses.Field[Any]])clsr+cCst|rt|SgSdS)zReturn a sequence of all dataclasses.Field objects associated with a class as an already processed dataclass. The class must **already be a dataclass** for Field objects to be returned. N) dataclasses is_dataclassfields)rr(r(r)dataclass_fieldss  rcsJt|rBt|jD]}t|qfddt|DSgSdS)zReturn a sequence of all dataclasses.Field objects associated with an already processed dataclass, excluding those that originate from a superclass. The class must **already be a dataclass** for Field objects to be returned. csg|]}|kr|qSr(r().0fZ super_fieldsr(r) *sz*local_dataclass_fields..N)rrset __bases__rLrr)rsupr(rr)local_dataclass_fieldss  r)N)H__doc__ __future__rrhrrCr-operatorplatformsysr[rrrrrrr r r r r r version_infoZpy312Zpy311Zpy310Zpy39Zpy38python_implementationpypycpython startswithwin32ZosxmachinelowerarmmaxsizeZis64bitboolZhas_refcount_gc attrgetterZ dottedgetterr NamedTuplerrArEr\ importlibrGrYor_rNZanextrVobjectrTcollections.abcrOr`rJrirkrqrrr|rcrrrr(r(r(r) s                         &   *H