o
    yAfp	                     @  sD   d dl mZ d dlmZ d dlmZ d dlmZ G dd deZdS )    )annotations)Any)BuildHookInterface)VersionFilec                      sV   e Zd ZdZd fddZedd
dZedddZedddZdddZ	  Z
S )VersionBuildHookversionargsr   kwargsreturnNonec                   s(   t  j|i | d | _d | _d | _d S )N)super__init___VersionBuildHook__config_path"_VersionBuildHook__config_template!_VersionBuildHook__config_pattern)selfr   r	   	__class__ E/usr/lib/python3.10/site-packages/hatchling/builders/hooks/version.pyr      s   
zVersionBuildHook.__init__strc                 C  s^   | j d u r,| jdd}t|tsd| j d}t||s)d| j d}t||| _ | j S )Npath zOption `path` for build hook `` must be a stringz` is required)r   configget
isinstancer   PLUGIN_NAME	TypeError
ValueError)r   r   messager   r   r   config_path   s   

zVersionBuildHook.config_pathc                 C  sD   | j d u r| jdd}t|tsd| j d}t||| _ | j S )Ntemplater   z"Option `template` for build hook `r   )r   r   r   r   r   r   r   )r   r"   r    r   r   r   config_template#   s   

z VersionBuildHook.config_template
str | boolc                 C  sH   | j d u r!| jdd}t|ttfsd| j d}t||| _ | j S )Npatternr   z!Option `pattern` for build hook `z` must be a string or a boolean)r   r   r   r   r   boolr   r   )r   r%   r    r   r   r   config_pattern/   s   
zVersionBuildHook.config_pattern
build_datadict[str, Any]c                 C  s^   t | j| j}| jr|j| jd || jj n	|| jj| j	 |d 
d| j  d S )N)r%   Z	artifacts/)r   rootr!   r'   readZset_versionmetadatar   writer#   append)r   r   r(   Zversion_filer   r   r   
initialize;   s   zVersionBuildHook.initialize)r   r   r	   r   r
   r   )r
   r   )r
   r$   )r   r   r(   r)   r
   r   )__name__
__module____qualname__r   r   propertyr!   r#   r'   r0   __classcell__r   r   r   r   r   	   s    r   N)	
__future__r   typingr   Z)hatchling.builders.hooks.plugin.interfacer   Zhatchling.version.corer   r   r   r   r   r   <module>   s
    