o a@s`ddlZddlZejddddZddZdd Zd d Zd d ZddZddZ ddZ dS)Ni)maxsizecCs(tt|j}|r|dd}|S)N)tupleinspect signature parametersvalues)func remove_firstrr 6/usr/lib/python3/dist-packages/django/utils/inspect.py_get_func_parameterss r cCs$t|}|r |jn|}t||dS)N)r )rismethod__func__r ) meth_or_func is_methodr r r r _get_callable_parameters s  rcCst|}dd|DS)NcSs g|] }|jtjjkr|jqSr )kindr ParameterPOSITIONAL_OR_KEYWORDname.0paramr r r s z!get_func_args..)r)r paramsr r r get_func_argssrcCst|}g}|D]7}|j}|dkrq|jtjjkrd|}n |jtjjkr)d|}|jtjjkr9| ||jfq| |fq|S)z Return a list of (argument name, default value) tuples. If the argument does not have a default value, omit it in the tuple. Arguments such as *args and **kwargs are also included. self*z**) rrrrrVAR_POSITIONAL VAR_KEYWORDdefaultemptyappend)r rargsrrr r r get_func_full_argss r%cCtddt|DS)zBReturn True if function 'func' accepts keyword arguments **kwargs.cs |] }|j|jkr|VqdSN)rr rpr r r 5 z&func_accepts_kwargs..anyrr r r r func_accepts_kwargs3sr0cCr&)zL Return True if function 'func' accepts positional arguments *args. csr'r()rrr)r r r r+?r,z(func_accepts_var_args..r-r/r r r func_accepts_var_args;sr1cCs0tddt|D}t|r|dkS|dkS)z,Return True if a method only accepts 'self'.cSsg|] }|j|jkr|qSr )rrr)r r r rGs  z&method_has_no_args..rr)lenrrr)methcountr r r method_has_no_argsEsr5cstfddt|DS)Nc3s|]}|jkVqdSr(rrr6r r r+Osz*func_supports_parameter..r-)r rr r6r func_supports_parameterNsr7) functoolsr lru_cacher rrr%r0r1r5r7r r r r s