o
    i                     @   s|   d Z ddlZddlZddlZG dd deZG dd deZG dd deZG d	d
 d
eZdddZ	dddZ
dd ZdS )zExtension utilities.    Nc                   @      e Zd ZdZdS )ExtensionLoadingErrorzAn extension loading error.N__name__
__module____qualname____doc__ r	   r	   Y/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/jupyter_server/extension/utils.pyr          r   c                   @   r   )ExtensionMetadataErrorzAn extension metadata error.Nr   r	   r	   r	   r
   r      r   r   c                   @   r   )ExtensionModuleNotFoundz$An extension module not found error.Nr   r	   r	   r	   r
   r      r   r   c                   @   r   )NotAnExtensionAppz2An error raised when a module is not an extension.Nr   r	   r	   r	   r
   r      r   r   c                 C   sd   zt | dW S  ty   Y nw zt | d}W n ty%   d}t|dw tdj| dt |S )zLooks for _load_jupyter_server_extension as an attribute
    of the object or module.

    Adds backwards compatibility for old function name missing the
    underscore prefix.
    _load_jupyter_server_extensionload_jupyter_server_extensionz6_load_jupyter_server_extension function was not found.NzA `_load_jupyter_server_extension` function was not found in {name!s}. Instead, a `load_jupyter_server_extension` function was found and will be used for now. This function name will be deprecated in future releases of Jupyter Server.name)getattrAttributeErrorr   warningswarnformatDeprecationWarning)objloggerfuncmsgr	   r	   r
   
get_loader   s$   
r   c                 C   s   t  }t| }t  }|| }|r |d|  d|dd z|| fW S  ty0   Y nw z| }|rA|dj	| d ||fW S  tyN   Y nw |rZ|
dj	| d || | dgfS )	a5  Find the extension metadata from an extension package.

    This looks for a `_jupyter_server_extension_points` function
    that returns metadata about all extension points within a Jupyter
    Server Extension pacakge.

    If it doesn't exist, return a basic metadata packet given
    the module name.
    zPackage z took z.4fzs to importzA `_jupyter_server_extension_points` function was not found in {name}. Instead, a `_jupyter_server_extension_paths` function was found and will be used for now. This function name will be deprecated in future releases of Jupyter Server.r   zA `_jupyter_server_extension_points` function was not found in {name}, so Jupyter Server will look for extension points in the extension pacakge's root.)moduler   )timeperf_counter	importlibimport_moduleinfo _jupyter_server_extension_pointsr   _jupyter_server_extension_pathswarningr   debug)package_namer   
start_timer   end_timedurationextension_pointsr	   r	   r
   get_metadata<   s<   


r-   c                 C   s   ddl m} || dS )aZ  Raises an exception is the extension is missing a needed
    hook or metadata field.
    An extension is valid if:
    1) name is an importable Python package.
    1) the package has a _jupyter_server_extension_paths function
    2) each extension path has a _load_jupyter_server_extension function

    If this works, nothing should happen.
       )ExtensionPackager   )managerr/   )r   r/   r	   r	   r
   validate_extensionr   s   

r1   )N)r   r!   r   r   	Exceptionr   r   r   r   r   r-   r1   r	   r	   r	   r
   <module>   s    

6