Ë
    ZTÐh@  ã                  óÞ   — U d dl mZ d dlmZ d dlmZmZmZmZm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ eegef   Zded	<    G d
„ d«      Z G d„ de«      Z G d„ de	«      Z G d„ de	«      Zy)é    )Úannotations)Úcontextmanager)ÚCallableÚDictÚIteratorÚOptionalÚ	TypedDict)ÚSelfÚ	TypeAlias)ÚSiftChannel)ÚTelemetryConfig)ÚIngestionServicer   ÚIngestionServiceBuilderc                  ó”   — e Zd ZU dZded<   ded<   	 	 	 	 dd„Ze	 	 	 	 	 	 dd„«       Ze	 	 	 	 	 	 dd„«       Zdd	„Z	dd
„Z
edd„«       Zy)ÚIngestionServicesManagera–  
    Allows for the initialization of multiple instances of `sift_py.ingestion.service.IngestionService` from
    either telemetry configs or builders under a single wrapper class that assists in managing data-ingestion
    for multiple telemetry configs.

    The initializer of this class can be used directly, but prefer to use either `from_builders` or `from_telemetry_configs`.
    Prefer to use `from_builders` if you have custom options that you want to provide to `sift_py.ingestion.service.IngestionService.__init__`.

    Example usage:

    ```python
    manager = IngestionServicesManager.from_telementry_configs(grpc_channel, {
        "config_a": config_a,
        "config_b": config_b,
    })

    with manager.ingestion_service("config_a") as config_a:
        config_a.try_ingest_flow(...)

    with manager.ingestion_service("config_b") as config_b:
        config_b.try_ingest_flow(...)
    ```
    r   Ú_transport_channelúDict[str, IngestionService]Ú_ingestion_servicesc                ó    — || _         || _        y ©N)r   r   )ÚselfÚtransport_channelÚingestion_servicess      ú^/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_py/ingestion/manager.pyÚ__init__z!IngestionServicesManager.__init__+   s   € ð #4ˆÔØ#5ˆÕ ó    c                ór   —  | ||j                  «       D ci c]  \  }}| ||«      “Œ c}}¬«      S c c}}w ©N)r   r   )Úitems)ÚclsÚchannelÚbuildersÚkeyÚbuilders        r   Úfrom_buildersz&IngestionServicesManager.from_builders1   s:   € ñ Ø%ØJRÏ.É.ÓJZ×[¹,¸#¸w ¡W¨WÓ%5Ñ 5Ó[ô
ð 	
ùã[s   —3c                óz   —  | ||j                  «       D ci c]  \  }}|t        ||«      “Œ c}}¬«      S c c}}w r   )r   r   )r    r!   Útelemetry_configsr#   Úconfigs        r   Úfrom_telemetry_configsz/IngestionServicesManager.from_telemetry_configs:   sF   € ñ Ø%àJ[×JaÑJaÓJc÷ Ù;F¸3ÀÔ% g¨vÓ6Ñ6ó ô
ð 	
ùó s   —7c                ó8   — | j                   j                  |«      S r   )r   Úget©r   Ú
identifiers     r   Ú#get_ingestion_service_by_identifierz<IngestionServicesManager.get_ingestion_service_by_identifierE   s   € Ø×'Ñ'×+Ñ+¨JÓ7Ð7r   c                ó$   — | j                  |«      S r   )r.   r,   s     r   Ú__getitem__z$IngestionServicesManager.__getitem__H   s   € Ø×7Ñ7¸
ÓCÐCr   c              #  ó@   K  — | |   }|€t        d|› d«      ‚|–— y ­w)Nz;An ingestion service is not configured for the identifier 'z'.)ÚIngestionServiceManagerError)r   r-   Úingestion_services      r   r3   z*IngestionServicesManager.ingestion_serviceK   s9   è ø€ à  Ñ,ÐàÐ$Ü.ØMÈjÈ\ÐY[Ð\óð ð  Óùs   ‚N)r   r   r   r   )r!   r   r"   z"Dict[str, IngestionServiceBuilder]Úreturnr
   )r!   r   r'   zDict[str, TelemetryConfig]r4   r
   )r-   Ústrr4   zOptional[IngestionService])r-   r5   r4   zIterator[IngestionService])Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   Úclassmethodr%   r)   r.   r0   r   r3   © r   r   r   r      s¡   … ñð0 $Ó#Ø4Ó4ð6Ø!,ð6ØB]ó6ð ð
Ø!ð
Ø-Oð
à	ò
ó ð
ð ð
Ø!ð
Ø6Pð
à	ò
ó ð
ó8óDð ò ó ñ r   r   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )r2   c                ó"   •— t         ‰|   |«      S r   )Úsuperr   )r   ÚmsgÚ	__class__s     €r   r   z%IngestionServiceManagerError.__init__X   s   ø€ Ü‰wÑ Ó$Ð$r   )r@   r5   )r6   r7   r8   r   Ú__classcell__)rA   s   @r   r2   r2   W   s   ø„ ÷%ñ %r   r2   c                  ó"   — e Zd ZU ded<   ded<   y)ÚTelemetryConfigByIdentifierMapr5   r-   r   Útelemetry_configN©r6   r7   r8   r:   r<   r   r   rD   rD   \   s   … ØƒOØ%Ô%r   rD   c                  ó"   — e Zd ZU ded<   ded<   y)Ú*IngestionConfigServiceBuilderIdentifierMapr5   r-   r   r$   NrF   r<   r   r   rH   rH   a   s   … ØƒOØ$Ô$r   rH   N)Ú
__future__r   Ú
contextlibr   Útypingr   r   r   r   r	   Útyping_extensionsr
   r   Úsift_py.grpc.transportr   Ú"sift_py.ingestion.config.telemetryr   Úsift_py.ingestion.servicer   r   r:   r   Ú	Exceptionr2   rD   rH   r<   r   r   ú<module>rQ      sf   ðÞ "å %ß @Õ @ç -å .Ý >Ý 6à%-¨{¨mÐ=MÐ.MÑ%NÐ ˜Ó N÷E ñ E ôP% 9ô %ô
& Yô &ô
%°õ %r   