o
    Ni                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlZdadZ	dZ
dZed	d
dgZedg dZdd Zdd ZG dd deZdd Zdd Zdd ZdS )zMetadata parsing.    )absolute_import)print_function)
namedtupleNzimportlib.metadataimportlib_metadatapkg_resources
entrypointmodule_nameattrsdist)egg_baseegg_infoegg_nameegg_versionc                  C   sp   t durt S tjdkrta t S z	ddl} ta t W S  ty!   Y nw z	ddl}ta t W S  ty7   Y t	dw )z-Retrieve the correct metadata library to use.N)      r   zgFailed to find a library for loading metadata. This should not happen. Please report a bug against pbr.)
_metadata_libsysversion_infoMETADATA_LIB_STDLIBr   METADATA_LIB_BACKPORTImportErrorr   METADATA_LIB_LEGACYRuntimeError)r   r    r   H/home/ubuntu/.local/lib/python3.10/site-packages/pbr/_compat/metadata.py_get_metadata_lib    s,   
r   c                  C   s   t  } | tkrdd l}t|j dd d}t
|S | tkr0dd l}t| dd d}t
|S dd l}t|j	dd d}t
|S )Nr   c                 S      | j d  S Nnamemetadatalowerxr   r   r   <lambda>O       z#get_distributions.<locals>.<lambda>)keyc                 S   r   r   r   r"   r   r   r   r$   V   r%   c                 S   s
   | j  S N)project_namer!   )r
   r   r   r   r$   ]   s   
 )r   r   importlib.metadatasortedr    distributionsr   r   r   working_setlist)metadata_lib	importlibdatar   r   r   r   r   get_distributionsH   s*   r1   c                   @   s   e Zd Zdd Zdd ZdS )PackageNotFoundc                 C   s
   || _ d S r'   )package_name)selfr3   r   r   r   __init__d   s   
zPackageNotFound.__init__c                 C   s   d | jS )NzPackage {0} not installed)formatr3   )r4   r   r   r   __str__g   s   zPackageNotFound.__str__N)__name__
__module____qualname__r5   r7   r   r   r   r   r2   c   s    r2   c                 C   s   t  }|tkr$dd l}z|j| jd }W nG |jjy#   t| w |tkrCdd l}z
|| jd }W n' |jyB   t| w dd l	}z
|
| d}W n |jy]   t| w zt|W S  tyn   Y d S w )Nr   zpbr.json)r   r   r)   r    distributionPackageNotFoundErrorr2   r   r   r   get_distributionget_metadataDistributionNotFoundjsonloads	Exception)r3   r.   r/   r0   r   r   r   r   r   r>   k   s@   

r>   c                 C   s   t  }|tkr!dd l}z|j| jW S  |jjy    t| w |tkr=dd l	}z|| jW S  |jy<   t| w dd l
}z|| jW S  |jyT   t| w )Nr   )r   r   r)   r    r;   versionr<   r2   r   r   r   r=   r?   )r3   r.   r/   r   r   r   r   r   get_version   s*   rD   c                    sf  t  }|tkrDdd l}z
|jj| j} W n |jjy#   t| j	w t
|jdr8dd | jj dD }|S  fdd| jD }|S |tkrdd l}z	|j| j} W n |jyb   t| j	w t
|drvdd | jj dD }|S  fdd| jD }|S dd l}z|| j|| j| j| j	| j} W n |jy   t| j	w d	d |   D S )
Nr   EntryPointsc                 S   (   g | ]}|j t|j|jd dfqS .r   r	   r   r   moduleattrsplit.0epr   r   r   
<listcomp>       
z$get_entry_points.<locals>.<listcomp>groupc                    F   g | ]}|j  kr|jt|jd d |jd d ddfqS :r      rH   rI   rT   r   r   valuerM   rN   rS   r   r   rQ          
c                 S   rF   rG   rJ   rN   r   r   r   rQ      rR   c                    rU   rV   rY   rN   rS   r   r   rQ      r[   c                 S   s$   g | ]\}}|t |j|jd fqS )rI   )r   r   r	   )rO   r   rP   r   r   r   rQ      s    )r   r   r)   r    Distributionatr   r<   r2   r   hasattrentry_pointsselectr   r   r   r   PathMetadatar   r?   get_entry_mapitems)r
   rT   r.   r/   r#   r   r   r   rS   r   get_entry_points   s^   







rd   )__doc__
__future__r   r   collectionsr   r@   r   r   r   r   r   r   r
   r   r1   rB   r2   r>   rD   rd   r   r   r   r   <module>   s$   (&