o
    gZhP"                     @   s@   d dl Zd dlmZ ddlmZ ddlmZ G dd deZdS )    N)ObjectApiResponse   )NamespacedClient)_rewrite_parametersc                #   @   s   e Zd Zeddddddddddddddddddejej deje deje deje deje	 d	eje d
eje deje	 deje
 deje
 deje deje	 dejejddef  deje deje deej f ddZdS )TextStructureClient
text_files)Z	body_nameN)charsetcolumn_names	delimiterexplainformatgrok_patternhas_header_rowline_merge_size_limitlines_to_samplequoteshould_trim_fieldstimeouttimestamp_fieldtimestamp_formatr   r	   r
   r   r   r   r   r   r   r   r   r   zt.Literal[-1]zt.Literal[0]r   r   returnc                C   s  |du rt dd}i }|dur||d< |dur||d< |dur$||d< |dur,||d< |dur4||d< |dur<||d	< |durD||d
< |	durL|	|d< |
durT|
|d< |dur\||d< |durd||d< |durl||d< |durt||d< |dur|||d< |}ddd}| jd||||dS )uG  
        Finds the structure of a text file. The text file must contain data that is suitable
        to be ingested into Elasticsearch.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/find-structure.html>`_

        :param text_files:
        :param charset: The text’s character set. It must be a character set that is
            supported by the JVM that Elasticsearch uses. For example, UTF-8, UTF-16LE,
            windows-1252, or EUC-JP. If this parameter is not specified, the structure
            finder chooses an appropriate character set.
        :param column_names: If you have set format to delimited, you can specify the
            column names in a comma-separated list. If this parameter is not specified,
            the structure finder uses the column names from the header row of the text.
            If the text does not have a header role, columns are named "column1", "column2",
            "column3", etc.
        :param delimiter: If you have set format to delimited, you can specify the character
            used to delimit the values in each row. Only a single character is supported;
            the delimiter cannot have multiple characters. By default, the API considers
            the following possibilities: comma, tab, semi-colon, and pipe (|). In this
            default scenario, all rows must have the same number of fields for the delimited
            format to be detected. If you specify a delimiter, up to 10% of the rows
            can have a different number of columns than the first row.
        :param explain: If this parameter is set to true, the response includes a field
            named explanation, which is an array of strings that indicate how the structure
            finder produced its result.
        :param format: The high level structure of the text. Valid values are ndjson,
            xml, delimited, and semi_structured_text. By default, the API chooses the
            format. In this default scenario, all rows must have the same number of fields
            for a delimited format to be detected. If the format is set to delimited
            and the delimiter is not set, however, the API tolerates up to 5% of rows
            that have a different number of columns than the first row.
        :param grok_pattern: If you have set format to semi_structured_text, you can
            specify a Grok pattern that is used to extract fields from every message
            in the text. The name of the timestamp field in the Grok pattern must match
            what is specified in the timestamp_field parameter. If that parameter is
            not specified, the name of the timestamp field in the Grok pattern must match
            "timestamp". If grok_pattern is not specified, the structure finder creates
            a Grok pattern.
        :param has_header_row: If you have set format to delimited, you can use this
            parameter to indicate whether the column names are in the first row of the
            text. If this parameter is not specified, the structure finder guesses based
            on the similarity of the first row of the text to other rows.
        :param line_merge_size_limit: The maximum number of characters in a message when
            lines are merged to form messages while analyzing semi-structured text. If
            you have extremely long messages you may need to increase this, but be aware
            that this may lead to very long processing times if the way to group lines
            into messages is misdetected.
        :param lines_to_sample: The number of lines to include in the structural analysis,
            starting from the beginning of the text. The minimum is 2; If the value of
            this parameter is greater than the number of lines in the text, the analysis
            proceeds (as long as there are at least two lines in the text) for all of
            the lines.
        :param quote: If you have set format to delimited, you can specify the character
            used to quote the values in each row if they contain newlines or the delimiter
            character. Only a single character is supported. If this parameter is not
            specified, the default value is a double quote ("). If your delimited text
            format does not use quoting, a workaround is to set this argument to a character
            that does not appear anywhere in the sample.
        :param should_trim_fields: If you have set format to delimited, you can specify
            whether values between delimiters should have whitespace trimmed from them.
            If this parameter is not specified and the delimiter is pipe (|), the default
            value is true. Otherwise, the default value is false.
        :param timeout: Sets the maximum amount of time that the structure analysis make
            take. If the analysis is still running when the timeout expires then it will
            be aborted.
        :param timestamp_field: Optional parameter to specify the timestamp field in
            the file
        :param timestamp_format: The Java time format of the timestamp field in the text.
        Nz-Empty value passed for parameter 'text_files'z/_text_structure/find_structurer   r	   r
   r   r   r   r   r   r   r   r   r   r   r   zapplication/jsonzapplication/x-ndjson)acceptzcontent-typePOST)paramsheadersbody)
ValueErrorZperform_request)selfr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Z_TextStructureClient__pathZ_TextStructureClient__queryZ_TextStructureClient__bodyZ_TextStructureClient__headers r   `/var/www/html/lang_env/lib/python3.10/site-packages/elasticsearch/_sync/client/text_structure.pyfind_structure   sN   \
z"TextStructureClient.find_structure)__name__
__module____qualname__r   tSequenceAnyOptionalstrboolintUnionr   r    r   r   r   r   r      sf    
	
r   )	typingr$   Zelastic_transportr   _baser   utilsr   r   r   r   r   r   <module>   s
   