
    ci                         d dl mZmZmZmZmZmZ d dlmZ ddl	m
Z
 ddlmZmZ erddlmZ ddlmZ ddlmZ  G d	 d
          ZdS )    )TYPE_CHECKINGAnyDictListOptionalTuple)Self   )analysis)AnyUsingTypemerge)DocumentMeta)Field)MappingBasec                       e Zd ZddededefdZdedeee         e	d         f         fd	Z
dede	d
         fdZddZddZddZdedefdZdedefdZdededdfdZdeeef         fdZdS )	IndexBasedefaultnamemapping_classusingc                 v    || _         g | _        || _        i | _        i | _        i | _        || _        d| _        dS )zu
        :arg name: name of the index
        :arg using: connection alias to use, defaults to ``'default'``
        N)_name
_doc_types_using	_settings_aliases	_analysis_mapping_class_mapping)selfr   r   r   s       \/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/elasticsearch/dsl/index_base.py__init__zIndexBase.__init__    sA    
 
02)+(*)++15    
field_pathreturnr   c                     | j         D ],}|j        j                            |          \  }}|||fc S -| j        r| j                            |          S g d fS N)r   	_doc_typemappingresolve_nestedr   )r    r$   docnestedfields        r!   r*   zIndexBase.resolve_nested.   su     ? 	% 	%CM1@@LLMFE u}$$$ != 	<=//
;;;4xr#   r   c                     | j         D ]'}|j        j                            |          }||c S (| j        r| j                            |          S d S r'   )r   r(   r)   resolve_fieldr   )r    r$   r+   r-   s       r!   r/   zIndexBase.resolve_field9   sd    ? 	 	CM)77
CCE  != 	;=..z:::tr#   c                 P    | j         |                                 | _         | j         S r'   )r   r   )r    s    r!   get_or_create_mappingzIndexBase.get_or_create_mappingB   s%    =  //11DM}r#   r)   Nc                 T    |                                                      |           dS )z
        Associate a mapping (an instance of
        :class:`~elasticsearch.dsl.Mapping`) with this index.
        This means that, when this index is created, it will contain the
        mappings for the document type defined by those mappings.
        N)r1   update)r    r)   s     r!   r)   zIndexBase.mappingG   s*     	""$$++G44444r#   documentr   c                 `    | j                             |           |j        j        | |_        |S )a  
        Associate a :class:`~elasticsearch.dsl.Document` subclass with an index.
        This means that, when this index is created, it will contain the
        mappings for the ``Document``. If the ``Document`` class doesn't have a
        default index yet (by defining ``class Index``), this instance will be
        used. Can be used as a decorator::

            i = Index('blog')

            @i.document
            class Post(Document):
                title = Text()

            # create the index, including Post mappings
            i.create()

            # .search() will now return a Search object that will return
            # properly deserialized Post instances
            s = i.search()
        )r   append_indexr   )r    r4   s     r!   r4   zIndexBase.documentP   s3    * 	x(((
 ? ("HOr#   kwargsc                 :    | j                             |           | S )z
        Add settings to the index::

            i = Index('i')
            i.settings(number_of_shards=1, number_of_replicas=0)

        Multiple calls to ``settings`` will merge the keys, later overriding
        the earlier.
        )r   r3   r    r8   s     r!   settingszIndexBase.settingso   s     	f%%%r#   c                 :    | j                             |           | S )z
        Add aliases to the index definition::

            i = Index('blog-v2')
            i.aliases(blog={}, published={'filter': Q('term', published=True)})
        )r   r3   r:   s     r!   aliaseszIndexBase.aliases|   s     	V$$$r#   argsc                     t          j        |i |}|                                }|sdS t          | j        |d           dS )a  
        Explicitly add an analyzer to an index. Note that all custom analyzers
        defined in mappings will also be created. This is useful for search analyzers.

        Example::

            from elasticsearch.dsl import analyzer, tokenizer

            my_analyzer = analyzer('my_analyzer',
                tokenizer=tokenizer('trigram', 'nGram', min_gram=3, max_gram=3),
                filter=['lowercase']
            )

            i = Index('blog')
            i.analyzer(my_analyzer)

        NT)r   analyzerget_analysis_definitionr   r   )r    r>   r8   r@   ds        r!   r@   zIndexBase.analyzer   sS    $ $d5f55,,.. 	F 	dna&&&&&r#   c                 
   i }| j         r
| j         |d<   | j        r
| j        |d<   | j        r| j                                        ni }| j        r| j                                        ni }| j        D ]T}|j        j        }t          ||                                d           t          ||                                d           U|r||d<   |s| j	        r.t          || j	                   ||
                    di           d<   |S )Nr;   r=   Tmappingsr   )r   r   r   to_dict_collect_analysisr   r(   r)   r   r   
setdefault)r    outrD   r   rB   r)   s         r!   rE   zIndexBase.to_dict   s   > 	-"nC
O= 	+!]C	N.2mC4=((***8<M4=224442 	? 	?Ak)G(GOO--t444(G5577>>>> 	'&C
O 	Bt~ 	B(DN+++9ACNN:r**:6
r#   )r   )r%   r   )r)   r   r%   N)r4   r   r%   r   )__name__
__module____qualname__strtyper   r"   r   r   r   r*   r/   r1   r)   r4   r   r	   r;   r=   r@   r   rE    r#   r!   r   r      sl       6 6S 6 6l 6 6 6 6			tCy(=11	2	 	 	 	 0A       
5 5 5 5   >          'c 'S 'T ' ' ' '6c3h      r#   r   N)typingr   r   r   r   r   r   typing_extensionsr	    r   utilsr   r   document_baser   r-   r   mapping_baser   r   rN   r#   r!   <module>rU      s   $ C B B B B B B B B B B B B B B B " " " " " "       & & & & & & & & *++++++))))))S S S S S S S S S Sr#   