File: D:/Python311/Lib/site-packages/setuptools/config/__pycache__/setupcfg.cpython-311.pyc
�
�ncnb � � � d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddl m
Z
mZmZm
Z
mZmZmZmZmZmZmZ ddlmZmZ ddlmZmZ dd lmZmZ dd
lmZ ddl m!Z! dd
l"m#Z# e
rddl$m%Z% ddl&m'Z' ee(ej) f Z*e
dedef f Z+ e
de+f Z, eded �� � Z- d4de*de.fd�Z/ddde*ddfd�Z0 d5ddde*dee* de1ded f
d�Z2d e-d!e(fd"�Z3d#ed de.fd$�Z4 d6d%dd&e,ded' fd(�Z5d)e(d*e(d+e6fd,�Z7 G d-� d.ee- � � Z8 G d/� d0e8d1 � � Z9 G d2� d3e8d � � Z:dS )7ze
Load setuptools configuration from ``setup.cfg`` files.
**API will be made private in the future**
� N)�defaultdict)�partial��wraps)�
TYPE_CHECKING�Callable�Any�Dict�Generic�Iterable�List�Optional�Tuple�TypeVar�Union)�DistutilsOptionError�DistutilsFileError)�Requirement�InvalidRequirement)�Version�InvalidVersion)�SpecifierSet)�SetuptoolsDeprecationWarning� )�expand��Distribution)�DistributionMetadata�str�Target)r r )�boundF�filepath�returnc � � ddl m} |� � }|r|� � � ng }t || ||� � }t |� � S )a, Read given configuration file and returns options from it as a dict.
:param str|unicode filepath: Path to configuration file
to get options from.
:param bool find_others: Whether to search for other configuration files
which could be on in various places.
:param bool ignore_option_errors: Whether to silently ignore
options, values of which could not be resolved (e.g. due to exceptions
in directives such as file:, attr:, etc.).
If False exceptions are propagated as expected.
:rtype: dict
r r )�setuptools.distr �find_config_files�_apply�configuration_to_dict)r"