o
    b
                     @  s<  d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ ddlm	Z	 dd	lm
Z
 dd
lmZ erIddlmZ d dlmZ ddlmZ n	eZG dd dZG dd deZd,ddZ	d-d.ddZzd d lmZ W n& ey   zd d lmZ W n ey   d d!lmZ d/d#d$ZY nw Y nw 	d0d1d*d+ZdS )2    )annotationsN)Any)Iterator)overload)TYPE_CHECKING   )function_has_arg)trace)
ScmVersion)Configuration)Protocol)_typesc                   @  s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   ?usr/lib/python3.10/site-packages/setuptools_scm/_entrypoints.pyr      s    r   c                   @  s2   e Zd ZU ded< edd	d
Zeddd
ZdS )MaybeConfigFunctionstrr   root_t.PathTconfigr   returnScmVersion | Nonec                 C     d S Nr   )selfr   r   r   r   r   __call__      zMaybeConfigFunction.__call__c                 C  r   r   r   )r   r   r   r   r   r      r   N)r   r   r   r   r   r   )r   r   r   r   )r   r   r   __annotations__r   r   r   r   r   r   r      s   
 r   r   r   r   r   fnr   r   c                 C  s@   t |dr|| |dS tjd|j d|j dtdd || S )Nr   )r   zparse function .z\ are required to provide a named argument 'config', setuptools_scm>=8.0 will remove support.   )category
stacklevel)r   warningswarnr   r   DeprecationWarning)r   r   r    r   r   r   _call_entrypoint_fn$   s   
r(   Ffallbackboolc                 C  sn   |rd}| j }nd}| j}ddlm} td|| |||| D ]}t|| | }t|| |r4|  S qd S )Nz!setuptools_scm.parse_scm_fallbackzsetuptools_scm.parse_scmr   )iter_matching_entrypointsversion_from_ep)fallback_rootabsolute_rootdiscoverr+   r	   r(   load)r   r)   
entrypointr   r+   epversionr   r   r   _version_from_entrypoints4   s   
r4   )entry_points)defaultdict&dict[str, list[_t.EntrypointProtocol]]c                   C  s   t d ttS )NzGimportlib metadata missing, this may happen at build time for python3.7)r%   r&   r6   listr   r   r   r   r5   Q   s   r5   groupr   name
str | NoneIterator[_t.EntrypointProtocol]c                   sH   t  }t|dr|j| d}n||  } d u rt|S  fdd|D S )Nselect)r9   c                 3  s    | ]
}|j  kr|V  qd S r   r:   ).0r2   r>   r   r   	<genexpr>c   s    z$iter_entry_points.<locals>.<genexpr>)r5   hasattrr=   iter)r9   r:   all_epsepsr   r>   r   iter_entry_pointsY   s   
rE   )r   r   r   r   r    r   r   r   )F)r   r   r)   r*   r   r   )r   r7   r   )r9   r   r:   r;   r   r<   )
__future__r   r%   typingr   r   r   r   utilsr   r	   r3   r
   r   r   typing_extensionsr    r   Z_tr   r(   r4   importlib.metadatar5   ImportErrorimportlib_metadatacollectionsr6   rE   r   r   r   r   <module>   s@    
