Ë
    ÿÍ:j   ã            	       ó  — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ  G d„ dee«      Z G d„ de«      Zdej6                  fde
e	   dee	   dee
e   gef   defd„Zy)z.Abstract base class used to build new loggers.é    N)ÚABC)Údefaultdict)ÚMappingÚSequence)ÚAnyÚCallableÚOptional)Úoverride)ÚLogger)Ú_DummyExperiment)Úrank_zero_experiment)ÚModelCheckpointc                   ó<   — e Zd ZdZdeddfd„Zedee   fd„«       Z	y)r   z"Base class for experiment loggers.Úcheckpoint_callbackÚreturnNc                  ó   — y)zŸCalled after model checkpoint callback saves a new checkpoint.

        Args:
            checkpoint_callback: the model checkpoint callback instance

        N© )Úselfr   s     úu/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/lightning/pytorch/loggers/logger.pyÚafter_save_checkpointzLogger.after_save_checkpoint#   s   € ð 	ó    c                  ó   — y)zvReturn the root directory where experiment logs get saved, or `None` if the logger does not save data
        locally.Nr   ©r   s    r   Úsave_dirzLogger.save_dir,   s   € ð r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úpropertyr	   Ústrr   r   r   r   r   r       s7   „ Ù,ð¸ð ÈTó ð ð˜( 3™-ò ó ñr   r   c                   óÖ   ‡ — e Zd ZdZdˆ fd„Zedefd„«       Zede	de	ddfd„«       Z
ede	de	ddfd	„«       Zeedefd
„«       «       Zeedefd„«       «       Zdedd fd„Zdedefd„Zˆ xZS )ÚDummyLoggerz‘Dummy logger for internal use.

    It is useful if we want to disable user's logger for a feature, but still ensure that user code can run

    r   Nc                 ó@   •— t         ‰| �  «        t        «       | _        y ©N)ÚsuperÚ__init__ÚDummyExperimentÚ_experiment)r   Ú	__class__s    €r   r&   zDummyLogger.__init__:   s   ø€ Ü‰ÑÔÜ*Ó,ˆÕr   c                 ó   — | j                   S )z9Return the experiment object associated with this logger.)r(   r   s    r   Ú
experimentzDummyLogger.experiment>   s   € ð ×ÑÐr   ÚargsÚkwargsc                  ó   — y r$   r   ©r   r,   r-   s      r   Úlog_metricszDummyLogger.log_metricsC   ó   € àr   c                  ó   — y r$   r   r/   s      r   Úlog_hyperparamszDummyLogger.log_hyperparamsG   r1   r   c                  ó   — y)zReturn the experiment name.Ú r   r   s    r   ÚnamezDummyLogger.nameK   ó   € ð r   c                  ó   — y)zReturn the experiment version.r5   r   r   s    r   ÚversionzDummyLogger.versionQ   r7   r   Úidxc                 ó   — | S r$   r   )r   r:   s     r   Ú__getitem__zDummyLogger.__getitem__W   s   € àˆr   r6   c                 ó*   — dt         dt         ddfd„}|S )zUAllows the DummyLogger to be called with arbitrary methods, to avoid AttributeErrors.r,   r-   r   Nc                   ó   — y r$   r   )r,   r-   s     r   Úmethodz'DummyLogger.__getattr__.<locals>.method^   s   € Ør   )r   )r   r6   r?   s      r   Ú__getattr__zDummyLogger.__getattr__[   s#   € ð	œ#ð 	¬ð 	°ó 	ð ˆr   )r   N)r   r   r   r   r&   r   r'   r+   r
   r   r0   r3   r    r6   r9   Úintr<   r   r@   Ú__classcell__)r)   s   @r   r"   r"   3   sæ   ø„ ñõ-ð ð ˜Oò  ó ð ð ð ð °ð ¸ò ó ðð ð Sð °Cð ¸Dò ó ðð Øð�cò ó ó ðð Øð˜ò ó ó ðð˜sð  }ó ð ð ¨÷ r   r"   ÚdictsÚagg_key_funcsÚdefault_funcr   c                 óø  — |xs i }t        t        j                  t        j                  | D �cg c]  }t        |j                  «       «      ‘Œ c}«      «      }t        t        «      }|D ]u  }|j                  |«      }| D �cg c]  }|j                  |«      ‘Œ c}D �	cg c]  }	|	€Œ|	‘Œ	 }
}	t        |
d   t        «      rt        |
||«      ||<   Œg |xs ||
«      ||<   Œw t        |«      S c c}w c c}w c c}	w )a#  Merge a sequence with dictionaries into one dictionary by aggregating the same keys with some given function.

    Args:
        dicts:
            Sequence of dictionaries to be merged.
        agg_key_funcs:
            Mapping from key name to function. This function will aggregate a
            list of values, obtained from the same key of all dictionaries.
            If some key has no specified aggregation function, the default one
            will be used. Default is: ``None`` (all keys will be aggregated by the
            default function).
        default_func:
            Default function to aggregate keys, which are not presented in the
            `agg_key_funcs` map.

    Returns:
        Dictionary with merged values.

    Examples:
        >>> import pprint
        >>> d1 = {'a': 1.7, 'b': 2.0, 'c': 1, 'd': {'d1': 1, 'd3': 3}}
        >>> d2 = {'a': 1.1, 'b': 2.2, 'v': 1, 'd': {'d1': 2, 'd2': 3}}
        >>> d3 = {'a': 1.1, 'v': 2.3, 'd': {'d3': 3, 'd4': {'d5': 1}}}
        >>> dflt_func = min
        >>> agg_funcs = {'a': statistics.mean, 'v': max, 'd': {'d1': sum}}
        >>> pprint.pprint(merge_dicts([d1, d2, d3], agg_funcs, dflt_func))
        {'a': 1.3,
         'b': 2.0,
         'c': 1,
         'd': {'d1': 3, 'd2': 3, 'd3': 3, 'd4': {'d5': 1}},
         'v': 2.3}

    r   )ÚlistÚ	functoolsÚreduceÚoperatorÚor_ÚsetÚkeysr   ÚdictÚgetÚ
isinstanceÚmerge_dicts)rC   rD   rE   ÚdrM   Úd_outÚkÚfnÚd_inÚvÚvalues_to_aggs              r   rQ   rQ   e   sã   € ðL "Ò' R€MÜ”	× Ñ ¤§¡ÀuÖ/MÀ!´°A·F±F³HµÒ/MÓNÓO€DÜœdÓ#€EØò ;ˆØ×Ñ˜qÓ!ˆØ=BÖ$C°T T§X¡X¨a¥[Ò$CÖU˜qÀqÁ}šÐUˆÐUä�m AÑ&¬Ô-Ü" =°"°lÓCˆE�!ŠHà*˜Ò*˜l¨MÓ:ˆE�!ŠHð;ô �‹;Ðùò 0Nùò %DùÒUs   ® C-ÂC2ÂC7Â'C7)r   rH   rJ   Ú
statisticsÚabcr   Úcollectionsr   Úcollections.abcr   r   Útypingr   r   r	   Útyping_extensionsr
   Úlightning.fabric.loggersr   ÚFabricLoggerÚlightning.fabric.loggers.loggerr   r'   r   Ú,lightning.pytorch.callbacks.model_checkpointr   r"   ÚmeanÚfloatrN   rQ   r   r   r   ú<module>re      sœ   ðñ 5ã Û Û Ý Ý #ß -ß *Ñ *å &å ;Ý OÝ @Ý Hôˆ\˜3ô ô&.�&ô .ðh (,Ø7A·±ñ2Ø�GÑð2à˜GÑ$ð2ð ˜H U™OÐ,¨eÐ3Ñ4ð2ð 
ô	2r   