U vi^ @sdZddlmZddlZddlZddlZddlZddlmZmZddl m Z m Z m Z m Z mZmZddlmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*ddl+m,Z,m-Z-m.Z.dd l/m0Z0m1Z1m2Z2dd l3m4Z4dd l5m6Z6dd l7m8Z8dd l9m:Z:ddl;mWne?k rbdZ>YnXdddddddddg Z@GdddeAZBGdddeAZCGdddeAZDGd d!d!eAZEGd"d#d#eZFd$d%ZGd&d'ZHdS)(z+Commons function for Sync and Async client.)absolute_importN)datetime timedelta)List GeneratorAnyUnionIterableAsyncGenerator) HTTPResponse) ConfigurationDialectQueryOptionStatementVariableAssignment Identifier ExpressionBooleanLiteralIntegerLiteral FloatLiteralDateTimeLiteralUnaryExpressionDurationLiteralDuration StringLiteralArrayExpressionImportDeclarationMemberExpressionMemberAssignmentFile WriteService QueryService DeleteServiceDeletePredicateRequest)FluxResponseMetadataMode FluxCsvParserFluxSerializationMode) FluxRecord TableList CSVIterator)get_date_helper)get_org_query_param)MissingPivotFunction)DataframeSerializer)_UTF_8_encodingTFz&influxdb_client.client.influxdb_clientz,influxdb_client.client.influxdb_client_asyncz influxdb_client.client.write_apiz&influxdb_client.client.write_api_asyncz"influxdb_client.client.write.retryz1influxdb_client.client.write.dataframe_serializerz2influxdb_client.client.util.multiprocessing_helperzinfluxdb_client.client.httpz!influxdb_client.client.exceptionsc@sDeZdZd eeeddddZededd d Zedd d ZdS) _BaseClientN'F)org default_tagshttp_client_loggerreturnc Ks||_||_||_||_t|_t|jts4td|j drT|jdd|j_ n |j|j_ ||j_ | dd|j_ | dd|j_| dd|j_| dd|j_| d d|j_| d d|j_| d d|j_| d d|j_| d |jj|j_||j_t||jjd<tD]} t| |jj| <q||j_| dd|j_| dd|j_d|_d|_|jrd|_d|j|_| dd} | rd|_dt !|"#|_|jjr|jjrd|_d|_| dd|_$| dd|_%dS)Nz#"url" attribute is not str instance/ verify_sslT ssl_ca_cert cert_file cert_key_filecert_key_password ssl_contextproxy proxy_headersconnection_pool_maxsizer3usernamepassword AuthorizationzToken auth_basicFzBasic retries profilers)&urltokenr1r2_Configurationconf isinstancestr ValueErrorendswithhost enable_gzipgetr7r8r9r:r;r<r=r>r?timeoutlogging getLoggerloggers LOGGERS_NAMESdebugr@rAZauth_header_nameZauth_header_valuebase64 b64encodeencodedecoderDrE) selfrFrGrVrQrOr1r2r3kwargsZ client_loggerrCr]M/opt/alt/python38/lib/python3.8/site-packages/influxdb_client/client/_base.py__init__/sT     z_BaseClient.__init__ config.ini) config_filec s.t|dddz|Wn@tjk rft|}ddl}||dW5QRXYnXtdfdd }tdfd d }tdfd d } |d } |d} d} |dr|d} d} |dr|d} d}|dr|d}d}|dr |d}d}|dr |d}d}|dr6|d}d}|drL|d}d}|drb|d}d}|drx|d}d}| drrd}ndd dD}t |}d}|drdd|d dD}d}|dr|d}|| | f|t | | ||t |||||t |t |||d |S)!N config_nameZinflux2FrTkeycs&rt|n |}|dS)N")rKstrip)rdvalueconfigrbis_jsonr]r^ _config_valuetsz4_BaseClient._from_config_file.._config_valuecsr |kS|SN) has_optionrcrhr]r^ _has_optionxsz2_BaseClient._from_config_file.._has_optioncsr |kS|Srl) has_sectionrc)rirjr]r^ _has_section{sz3_BaseClient._from_config_file.._has_sectionrFrGrQr1r7r8r9r:r;r?rCtagscSsi|]\}}||dqS)rerf).0kvr]r]r^ sz1_BaseClient._from_config_file..rEcSsg|] }|qSr]rrrsxr]r]r^ sz1_BaseClient._from_config_file..,r=)rVrQr1r2rOr7r8r9r:r;r?rCrEr=) configparser ConfigParserrPread ParsingErroropenjsonloadrKitemsdictsplit_to_int_to_bool)clsrarVrOr\Z json_filerrkrnrprFrGrQr1r7r8r9r:r;r?rCr2rqrEr=r]rhr^_from_config_filegs             z_BaseClient._from_config_filecKs&tdd}tdd}tdd}tdd}td d }td d} td d} td d} tdd} tdd} tdd}tdd}d}|dk rdd|dD}t}tjD]&\}}|dr|||dd<q|||f|t||||t || | | | t| t ||d |S)NZINFLUXDB_V2_URLzhttp://localhost:8086ZINFLUXDB_V2_TOKENzmy-tokenZINFLUXDB_V2_TIMEOUTZ10000ZINFLUXDB_V2_ORGzmy-orgZINFLUXDB_V2_VERIFY_SSLTrueZINFLUXDB_V2_SSL_CA_CERTZINFLUXDB_V2_CERT_FILEZINFLUXDB_V2_CERT_KEY_FILEZINFLUXDB_V2_CERT_KEY_PASSWORDZ#INFLUXDB_V2_CONNECTION_POOL_MAXSIZEZINFLUXDB_V2_AUTH_BASICFalseZINFLUXDB_V2_PROFILERScSsg|] }|qSr]rrrwr]r]r^rysz4_BaseClient._from_env_properties..rzZINFLUXDB_V2_TAG_) rVrQr1r2rOr7r8r9r:r;r?rCrE) osgetenvrrenvironr startswithlowerrr)rrVrOr\rFrGrQr1r7r8r9r:r;r?rCprofrEr2rdrgr]r]r^_from_env_propertiess@             z _BaseClient._from_env_properties)Nr0FNNN)r`NF)NF) __name__ __module__ __qualname__rKrr_ classmethodrrr]r]r]r^r/.s 8Sr/c@sleZdZeddddddgddZd8d d Zd ejfeed d dZ d ejfeed ddZ e e dddZ d ejfeeeed fd ddZd ejfeedd ddZd ejdfedddZd ejdfedddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zed fed+d,d-Zeeed.d/d0d1Z ee!e"d fd2d3d4Z#ed9eee$d5d6d7Z%d S): _BaseQueryApiTrz#datatypegroupdefaultZRFC3339)header delimiterZcomment_prefix annotationsZdate_time_formatNcCs6ddlm}|dkr|n||_||_t|j|_dS)Nr QueryOptions) influxdb_client.client.query_apir_query_options_influxdb_clientr! api_clientZ _query_api)r[influxdb_client query_optionsrr]r]r^r_s z_BaseQueryApi.__init__)response_metadata_moder4cCs"||||}t||S)z Parse HTTP response to TableList. :param response: HTTP response from an HTTP client. Expected type: `urllib3.response.HTTPResponse`. )_to_tables_parserlist generator table_listr[responserr_parserr]r]r^ _to_tabless z_BaseQueryApi._to_tablesc sZ||||4IdH4}|2z 3dHW}q 6|W5QIdHRSQIdHRXdS)z Parse HTTP response to TableList. :param response: HTTP response from an HTTP client. Expected type: `aiohttp.client_reqrep.ClientResponse`. N)rgenerator_asyncr)r[rrrparser_r]r]r^_to_tables_asyncsz_BaseQueryApi._to_tables_async)rr4cCst|S)zParse HTTP response to CSV.)r))r[rr]r]r^_to_csvsz_BaseQueryApi._to_csvcCs||||}|S)z Parse HTTP response to FluxRecord stream. :param response: HTTP response from an HTTP client. Expected type: `urllib3.response.HTTPResponse`. )_to_flux_record_stream_parserrrr]r]r^_to_flux_record_streamsz$_BaseQueryApi._to_flux_record_stream)r'Ncs ||||}|IdHS)z Parse HTTP response to FluxRecord stream. :param response: HTTP response from an HTTP client. Expected type: `aiohttp.client_reqrep.ClientResponse`. N)r __aenter__rrr]r]r^_to_flux_record_stream_asyncsz*_BaseQueryApi._to_flux_record_stream_asyncF)rcCs||||||}|S)z Parse HTTP response to DataFrame stream. :param response: HTTP response from an HTTP client. Expected type: `urllib3.response.HTTPResponse`. )_to_data_frame_stream_parserrr[data_frame_indexrrruse_extension_dtypesrr]r]r^_to_data_frame_streams z#_BaseQueryApi._to_data_frame_streamcs$||||||}|IdHS)z Parse HTTP response to DataFrame stream. :param response: HTTP response from an HTTP client. Expected type: `aiohttp.client_reqrep.ClientResponse`. N)rrrrr]r]r^_to_data_frame_stream_async%s z)_BaseQueryApi._to_data_frame_stream_asynccCst|tj||dSN)rserialization_moderr)r%r&Ztables)r[rrrr]r]r^r1sz_BaseQueryApi._to_tables_parsercCst|tj||dSr)r%r&stream)r[rrrr]r]r^r5sz+_BaseQueryApi._to_flux_record_stream_parsercCst|tj||||dS)N)rrrrrr)r%r&Z dataFrame)r[rrrrrr]r]r^r9s z*_BaseQueryApi._to_data_frame_stream_parsercCsZddlm}t|tr|}nt|}t|dkr>|jgddSt|dkrR|dS|SdS)z.Parse stream of DataFrames into expected type.)pdrN)columnsindex)extrasrrJrlen DataFrame)r[Z _generatorrZ _dataFramesr]r]r^_to_data_frames@s    z_BaseQueryApi._to_data_framescCst||jdS)N)r1client)r+r)r[r1r]r]r^ _org_paramOsz_BaseQueryApi._org_paramcCs:|jr|jjr|jS|jjr6ddlm}||jjdSdS)Nrr)rE)rrErrr)r[rr]r]r^_get_query_optionsRs  z _BaseQueryApi._get_query_options)paramscKsn|}|dk r|jnd}t||t||d}|rTtdtdtdt||ddrjt||S)N)querydialectZexternz ===============zProfiler: queryz===============Zdataframe_queryF) rrErr_build_flux_astprintrPr,Z print_warning)r[rrrr\rrEqr]r]r^ _create_queryYs  z_BaseQueryApi._create_queryr)rr4c CsLg}|D]:\}}t|}|dkr(q |tdtdtd||q |S)Nrrr)rr_parm_to_extern_astappendrrr)rZ statementsrdrgZ expressionr]r]r^_params_to_extern_astis  z#_BaseQueryApi._params_to_extern_ast)r4cCs<|dkr dSt|tr td|St|tr8tdt|St|trLtd|St|trt |}t |dd}|j d|d}t d|d |d St|trt|td d }|dkrtd tdt| ddgddStdt|ddgSnDt|trtdt|St|tr4tdttdd|dS|SdS)NrrrZ nanosecondriZ09drz%Y-%m-%dT%H:%M:%S.Zr) microsecondsrrus)Z magnitudeunit-)argumentoperatorrrcSs t|Srl)rr)itr]r]r^z3_BaseQueryApi._parm_to_extern_ast..elements)rJboolrintrrKfloatrrr*to_utcgetattr microsecondrstrftimerrrrrr rrmap)rg nanosecondsfractionZ _micro_deltar]r]r^rws:            z!_BaseQueryApi._parm_to_extern_ast)rrEc Csg}g}|dk rt|dkr|tdtdddg}|D]}|td|dqeZdZddZeedfdd Zedfdd ZZS) rHcCs t|d|_d|_d|_dS)NF)r r_rOr@rA)r[r]r]r^r_s z_Configuration.__init__)rrcs@t|||jr<|dkr,d|d<d|d<|dkrsP   h      /_9%