o
    yAfZ                     @   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 )    )ChainMap)MetadataHookInterface)ContextStringFormatter)	vcs_utilsc                       s4   e Zd ZdZ fddZedd Zdd Z  ZS )VCSMetadataHookvcsc                    s   t  j|i | d | _d S N)super__init___VCSMetadataHook__config_urls)selfargskwargs	__class__ </usr/lib/python3.10/site-packages/hatch_vcs/metadata_hook.pyr
      s   
zVCSMetadataHook.__init__c                 C   sb   | j d u r.| jdi }t|tstd| D ]\}}t|ts*td| dq|| _ | j S )Nurlszoption `urls` must be a tablezURL `z#` in option `urls` must be a string)r   configget
isinstancedict	TypeErroritemsstr)r   r   keyurlr   r   r   config_urls   s   


zVCSMetadataHook.config_urlsc                    sN   t td fddi} j }| D ]\}}||||< q||d< d S )NZcommit_hashc                     s   t  jS r   )r   Zget_commit_hashroot)r   r   r   r   <lambda>'   s    z(VCSMetadataHook.update.<locals>.<lambda>r   )r   r   r   copyr   format)r   metadata	formatterr   r   r   r   r   r   update#   s   
zVCSMetadataHook.update)	__name__
__module____qualname__ZPLUGIN_NAMEr
   propertyr   r%   __classcell__r   r   r   r   r      s    
r   N)	collectionsr   Z#hatchling.metadata.plugin.interfacer   Zhatchling.utils.contextr   Z	hatch_vcsr   r   r   r   r   r   <module>   s
   