�
,�Re�? � �( � d Z ddlZddlZddlZddlZddlZddlZddlZddlm Z ddl
mZ ddlm
Z
ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ dd lmZ dd
l m!Z! ddl"m#Z$ erdd
l%m&Z& ddl'm(Z( ddl)m*Z* ej+ Z,ee-ej. f Z/ ed� � Z0 edd�� � Z1 G d� d� � Z2 d@dee- dee/ dee- fd�Z3d@dee-e4ee/ f de-fd�Z5dee/ dee/ fd�Z6dee4e/f de-fd�Z7de/de-fd�Z8 dAd e-d!eee-e-f dee/ fd"�Z9d#e-d$ee/ de
fd%�Z:d&e
d#e-defd'�Z;d#e-d!eee-e-f de/dee/ee- e-f fd(�Z< dAd)e-d!eee-e-f dee/ defd*�Z= dAd+ee-e-f d!eee-e-f dee/ dee-ef fd,�Z>dddd-�d.eee-e-f dee/ dee- fd/�Z?d0e/d1e/de-fd2�Z@d3eeeee-eAf e-f de-fd4�ZBd5eCdeCfd6�ZD d@d7eeEeCf dee/ deee-ee- f fd8�ZFdBd:e-dee-eCf fd;�ZG G d<� d=� � ZH G d>� d?ee0e1f � � ZIdS )Cai Utility functions to expand configuration directives or special values
(such glob patterns).
We can split the process of interpreting configuration files into 2 steps:
1. The parsing the file contents from strings to value objects
that can be understand by Python (for example a string with a comma
separated list of keywords into an actual Python list of strings).
2. The expansion (or post-processing) of these values according to the
semantics ``setuptools`` assign to them (for example a configuration field
with the ``file:`` directive should be expanded from a list of file paths to
a single string with the contents of those files concatenated)
This module focus on the second step, and therefore allow sharing the expansion
functions among several configuration file formats.
**PRIVATE MODULE**: API reserved for setuptools internal usage only.
� N)�iglob)�ConfigParser)�
ModuleSpec)�chain)�
TYPE_CHECKING�Callable�Dict�Iterable�Iterator�List�Mapping�Optional�Tuple�TypeVar�Union�cast)�Path)�
ModuleType)�DistutilsOptionError� )� same_path)�Distribution)�ConfigDiscovery)�DistributionMetadata�_K�_VT)� covariantc �d � e Zd ZdZdedefd�Zdeee j
e j
f fd�Zd� ZdS ) �StaticModulez>Proxy to a module object that avoids executing arbitrary code.�name�specc �� � t j t j |j � � � � � � � }t
| � � � t � � � � | ` d S �N)
�ast�parse�pathlibr �origin�
read_bytes�vars�update�locals�self)r, r r! �modules ��/builddir/build/BUILDROOT/alt-python311-setuptools-65.6.3-2.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/setuptools/config/expand.py�__init__zStaticModule.__init__B sP � ���7�<���4�4�?�?�A�A�B�B���T�
�
���&�(�(�#�#�#��I�I�I� �returnc # �� �K � | j j D ]g�t �t j � � r�fd��j D � � E d {V �� �6t �t j � � r�j r�j �j fV � �hd S )Nc 3 �* �K � | ]
}|�j fV � �d S r# ��value)�.0�target� statements �r. �