o
    8wi	                  
   @   s   d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ e eZded	ee	 fd
dZde	dededee d	df
ddZdS )    N)entry_points)
getmembersisclass)
ModuleType)AnyUnion)is_overridden)_PYTHON_GREATER_EQUAL_3_10_0groupreturnc                 C   s   t rt| dnt | i }g }|D ]3}| }| }t|ts#|gn|}|r@tdt| d|j	 dd
dd |D   || q|S )a0  Collect external callbacks registered through entry points.

    The entry points are expected to be functions returning a list of callbacks.

    Args:
        group: The entry point group name to load callbacks from.

    Return:
        A list of all callbacks collected from external factories.

    )r
   zAdding z callbacks from entry point 'z': z, c                 s   s    | ]}t |jV  qd S N)type__name__).0cb r   `/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/lightning_fabric/utilities/registry.py	<genexpr>3   s    z+_load_external_callbacks.<locals>.<genexpr>)r	   r   getload
isinstancelist_loginfolennamejoinextend)r
   	factoriesexternal_callbacksfactorycallback_factorycallbacks_listr   r   r   _load_external_callbacks   s   r#   registrymethodmoduleparentc                 C   s@   t |tD ]\}}t||rt|||rt||}||  qd S r   )r   r   
issubclassr   getattr)r$   r%   r&   r'   _memberregister_fnr   r   r   _register_classes9   s   
r-   )loggingimportlib.metadatar   inspectr   r   typesr   typingr   r   lightning_utilitiesr   "lightning_fabric.utilities.importsr	   	getLoggerr   r   strr   r#   r   objectr-   r   r   r   r   <module>   s   
&