File: //lib/python3/dist-packages/setuptools/__pycache__/config.cpython-310.pyc
o
    �_�aqZ  �                   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d dl
Z
d dlmZmZ d dlmZmZ d dlmZ G d	d
� d
�Ze
jdd� �Zddd�Zdd� Zdd� Zddd�ZG dd� d�ZG dd� de�ZG dd� de�ZdS )�    N)�defaultdict)�partial��wraps)�iglob)�DistutilsOptionError�DistutilsFileError)�Version�InvalidVersion)�SpecifierSetc                   @   s    e Zd ZdZdd� Zdd� ZdS )�StaticModulez0
    Attempt to load the module by the name
    c                 C   s`   t j�|�}t|j��}|�� }W d   � n1 sw   Y  t�|�}t| ��	t
� � | `d S �N)�	importlib�util�	find_spec�open�origin�read�ast�parse�vars�update�locals�self)r   �name�spec�strm�src�module� r   �3/usr/lib/python3/dist-packages/setuptools/config.py�__init__   s   
�
zStaticModule.__init__c              
      sN   zt � fdd�| jjD ��W S  ty& } ztdjdi t� ���|�d }~ww )Nc                 3   sJ   � | ] }t |tj�r"|jD ]}t |tj�r!|j� kr
t�|j�V  q
qd S r
   )�
isinstancer   �Assign�targets�Name�id�literal_eval�value)�.0�	statement�target��attrr   r    �	<genexpr>#   s   � 
��
�
��z+StaticModule.__getattr__.<locals>.<genexpr>z#{self.name} has no attribute {attr}r   )�nextr   �body�	Exception�AttributeError�formatr   )r   r-   �er   r,   r    �__getattr__!   s   
�����zStaticModule.__getattr__N)�__name__�
__module__�__qualname__�__doc__r!   r5   r   r   r   r    r      s    r   c              	   c   s8   � zt j�d| � dV  W t j�| � dS t j�| � w )zH
    Add path to front of sys.path for the duration of the context.
    r   N)�sys�path�insert�remove)r;   r   r   r    �
patch_path0   s
   �r>