o
    yAfR                     @  s^   d dl mZ d dlmZmZ d dlZG dd dZG dd dZG dd	 d	Zed
edZ	dS )    )annotations)CallableTypeVarNc                   @  s\   e Zd ZdddZdddZdd
dZdddZdddZdddZdddZ	dddZ
dS )PluginManagerreturnNonec                 C  s"   t d| _t| j| _d| _d S )NhatchF)pluggyr   managerThirdPartyPluginsthird_party_pluginsinitializedself r   =/usr/lib/python3.10/site-packages/hatchling/plugin/manager.py__init__	   s   
zPluginManager.__init__c                 C     ddl m} | j| d S )Nr   )specs)Zhatchling.pluginr   r
   Zadd_hookspecs)r   r   r   r   r   
initialize      zPluginManager.initializenamestrClassRegisterc                 C  s\   | j s
|   d| _ d| }t| |d }|r|  tt| jj|d| j}t| || |S )NTZhatch_register_ZPLUGIN_NAME)r   r   getattrr   r
   hookr   setattr)r   r   	hook_namer   registerr   r   r   __getattr__   s   
zPluginManager.__getattr__c                 C  r   Nr   )hooks)Zhatchling.version.source.pluginr!   r
   r   r   r!   r   r   r   hatch_register_version_source!   r   z+PluginManager.hatch_register_version_sourcec                 C  r   r    )Zhatchling.version.scheme.pluginr!   r
   r   r"   r   r   r   hatch_register_version_scheme&   r   z+PluginManager.hatch_register_version_schemec                 C  r   r    )Zhatchling.builders.pluginr!   r
   r   r"   r   r   r   hatch_register_builder+   r   z$PluginManager.hatch_register_builderc                 C  r   r    )Zhatchling.builders.hooks.pluginr!   r
   r   r"   r   r   r   hatch_register_build_hook0   r   z'PluginManager.hatch_register_build_hookc                 C  r   r    )Zhatchling.metadata.pluginr!   r
   r   r"   r   r   r   hatch_register_metadata_hook5   r   z*PluginManager.hatch_register_metadata_hookNr   r   )r   r   r   r   )__name__
__module____qualname__r   r   r   r#   r$   r%   r&   r'   r   r   r   r   r      s    






r   c                   @  s0   e Zd Zdd	d
ZdddddZdddZdS )r   registration_methodr   
identifierr   r   r   r   r   c                 C  s   || _ || _|| _d S )N)r,   r-   r   )r   r,   r-   r   r   r   r   r   <   s   
zClassRegister.__init__Tinclude_third_partyr/   booldictc             	   C  s   |r| j js| j   i }|  D ]D}t|tr|n|g}|D ]5}t|| jd }|s8d|j d| d}t	|||v rPd|j d| d|| j d}t	||||< qq|S )NzClass `z` does not have a z attribute.z` defines its name as `z$` but that name is already used by `z`.)
r   loadedloadr,   
isinstancelistr   r-   r)   
ValueError)r   r/   classesZraw_registered_classesZregistered_classesZregistered_classr   messager   r   r   collectA   s(   

zClassRegister.collectr   type | Nonec                 C  s2   | j js| jdd}||v r|| S |  |S )NFr.   )r   r2   r9   get)r   r   r7   r   r   r   r;   \   s
   zClassRegister.getN)r,   r   r-   r   r   r   r   r   )r/   r0   r   r1   )r   r   r   r:   )r)   r*   r+   r   r9   r;   r   r   r   r   r   ;   s    
r   c                   @  s    e Zd Zd
ddZdddZd	S )r   r
   pluggy.PluginManagerr   r   c                 C  s   || _ d| _d S )NF)r
   r2   )r   r
   r   r   r   r   f   s   
zThirdPartyPlugins.__init__c                 C  s   | j d d| _d S )Nr   T)r
   Zload_setuptools_entrypointsr2   r   r   r   r   r3   j   s   
zThirdPartyPlugins.loadN)r
   r<   r   r   r(   )r)   r*   r+   r   r3   r   r   r   r   r   e   s    
r   PluginManagerBound)bound)

__future__r   typingr   r   r	   r   r   r   r=   r   r   r   r   <module>   s    3*
