o
    oi*	                  
   @   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
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ListType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   W/home/ubuntu/.local/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   r   r	   lightning_utilitiesr
   "lightning.fabric.utilities.importsr   	getLoggerr   r   strr%   objectr/   r   r   r   r   <module>   s   
&