U Ec_5@sddlmZddlZddlmZmZddlmZddlmZm Z m Z m Z m Z dddgd fZ d d Zd d ZddZdZddZddZGdddeZGdddeZdS))unicode_literalsN)datedatetimewraps) string_typesquotePY2unquoteurlparsecCs|dkrigSt|tr|g}g}|D]}t|trd|krDd|}t|}d|ji}|jrf|j|d<|jdkr|jpxd|d<d|d <|js|jrd t|jt|jf|d <|j r|j d kr|j |d <| |q&| |q&|S)zv Helper function to transform hosts argument to :class:`~elasticsearch.Elasticsearch` to a list of dicts. Nz://z//%shostporthttpsiTZuse_sslz%s:%sZ http_auth/Z url_prefix) isinstancerr hostnamerschemeusernamepasswordr pathappend)hostsoutr parsed_urlhrrA/tmp/pip-target-m1bursmm/lib/python/elasticsearch/client/utils.py_normalize_hostss4          r cCst|ttfrd|}n>t|ttfr2|}n&t|trJt| }nt|t rX|St|t rt rzt|t rz|dSt st|tr|dSt|S)z Escape a single value of a URL string or a query parameter. If it is a list or tuple, turn it into a comma-separated string first. ,zutf-8)rlisttuplejoinrr isoformatboolstrlowerbytesrr unicodeencode)valuerrr_escapeJs       r-cGsdddd|DS)z Create a URL string from parts, omit all `None` values and empty strings. Convert lists and tuples to comma separated values. rcss$|]}|tkrtt|dVqdS)s,*N) SKIP_IN_PATHr r-).0prrr psz_make_path..)r$)partsrrr _make_pathjs r3)prettyZhumanZ error_traceformatZ filter_pathcsfdd}|S)zt Decorator that pops all accepted parameters from method's kwargs and puts them in the params argument. cstfdd}|S)Ncs|ddpi}dd|ddp(iD}d|krL|d|d<tD]*}||krT||}|dk rTt|||<qTdD]}||kr||||<q|||d|S) NparamscSsi|]\}}||qSr)r()r/kvrrr szDquery_params.._wrapper.._wrapped..headersZ opaque_idz x-opaque-id)ignorerequest_timeout)r6r:)popcopyitems GLOBAL_PARAMSr-)argskwargsr6r:r0r8)es_query_paramsfuncrr_wrappeds  z0query_params.._wrapper.._wrappedr)rDrErC)rDr_wrapperszquery_params.._wrapperr)rCrGrrFr query_params|s rHcCsZt|tsdt|j|}t|tr:|dsV|d7}nt|trV|dsV|d7}|S)N  )rrr$mapdumpsr)endswith) serializerbodyrrr _bulk_bodys    rPc@s eZdZddZeddZdS)NamespacedClientcCs ||_dSN)client)selfrSrrr__init__szNamespacedClient.__init__cCs|jjSrR)rS transport)rTrrrrVszNamespacedClient.transportN)__name__ __module__ __qualname__rUpropertyrVrrrrrQsrQc@seZdZeddZdS) AddonClientcCs |t|}t||j||SrR)weakrefproxysetattr namespace)clsrSZaddonrrr infect_clientszAddonClient.infect_clientN)rWrXrY classmethodrarrrrr[sr[) __future__rr\rr functoolsrcompatrr r r r r.r r-r3r@rHrPobjectrQr[rrrrs  - #