File: //lib64/python3.9/importlib/__pycache__/metadata.cpython-39.opt-1.pyc
a
    �DOg>I  �                   @   s�  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ g d�ZG dd	� d	e�ZG d
d� de
�dd
��ZG dd� dej�ZG dd� d�ZG dd� d�ZG dd� de�Z G dd� d�Z!G dd� d�Z"G dd� de �Z#G dd� de�Z$dd� Z%d d!� Z&d"d#� Z'd$d%� Z(d&d'� Z)d(d)� Z*d*d+� Z+dS ),�    N)�ConfigParser)�suppress)�
import_module)�MetaPathFinder)�starmap)
�Distribution�DistributionFinder�PackageNotFoundError�distribution�
distributions�entry_points�files�metadata�requires�versionc                   @   s   e Zd ZdZdS )r	   zThe package was not found.N)�__name__�
__module__�__qualname__�__doc__� r   r   �*/usr/lib64/python3.9/importlib/metadata.pyr	   %   s   r	   c                   @   sn   e Zd ZdZe�d�Zdd� Zedd� �Z	edd� �Z
ed	d
� �Zedd� �Z
ed
d� �Zdd� Zdd� ZdS )�
EntryPointa�  An entry point as defined by Python packaging conventions.
    See `the packaging docs on entry points
    <https://packaging.python.org/specifications/entry-points/>`_
    for more information.
    >>> ep = EntryPoint(
    ...     name=None, group=None, value='package.module:attr [extra1, extra2]')
    >>> ep.module
    'package.module'
    >>> ep.attr
    'attr'
    >>> ep.extras
    ['extra1', 'extra2']
    zH(?P<module>[\w.]+)\s*(:\s*(?P<attr>[\w.]+)\s*)?((?P<extras>\[.*\])\s*)?$c                 C   sD   | j �| j�}t|�d��}td|�d�p,d�d��}t�t	||�S )z�Load the entry point from its definition. If only a module
        is indicated by the value, return that module. Otherwise,
        return the named object.
        �moduleN�attr� �.)
�pattern�match�valuer   �group�filter�split�	functools�reduce�getattr)�selfr   r   �attrsr   r   r   �loadP   s    zEntryPoint.loadc                 C   s   | j �| j�}|�d�S )Nr   �r   r   r   r   �r%   r   r   r   r   r   Z   s    zEntryPoint.modulec                 C   s   | j �| j�}|�d�S )Nr   r(   r)   r   r   r   r   _   s    zEntryPoint.attrc                 C   s$   | j �| j�}t�d|�d�p d�S )Nz\w+�extrasr   )r   r   r   �re�findallr   r)   r   r   r   r*   d   s    zEntryPoint.extrasc                    s   � �fdd��� � D �S )Nc                    s,   g | ]$}�� |�D ]\}}� |||��qqS r   ��items)�.0r   �namer   ��cls�configr   r   �
<listcomp>k   s   �z+EntryPoint._from_config.<locals>.<listcomp>)�sectionsr1   r   r1   r   �_from_configi   s    �zEntryPoint._from_configc                 C   sL   t dd�}t|_z|�|� W n" ty@   |�t�|�� Y n0 t�	|�S )N�=)Z
delimiters)
r   �strZoptionxformZread_string�AttributeErrorZreadfp�io�StringIOr   r6   )r2   �textr3   r   r   r   �
_from_textq   s    
zEntryPoint._from_textc                 C   s   t | j| f�S )zO
        Supply iter so one may construct dicts of EntryPoints easily.
        )�iterr0   �r%   r   r   r   �__iter__}   s    zEntryPoint.__iter__c                 C   s   | j | j| j| jffS �N)�	__class__r0   r   r   r?   r   r   r   �
__reduce__�   s    �zEntryPoint.__reduce__N)r   r   r   r   r+   �compiler   r'