python (3.11.7)
    *enb                        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.fdZ/ddde*ddfdZ0	 	 d5ddde*dee*         de1ded         f
dZ2d 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)partialwraps)
TYPE_CHECKINGCallableAnyDictGenericIterableListOptionalTupleTypeVarUnion)DistutilsOptionErrorDistutilsFileError)RequirementInvalidRequirement)VersionInvalidVersion)SpecifierSet)SetuptoolsDeprecationWarning   )expandDistribution)DistributionMetadatastrTarget)r   r   )boundFfilepathreturnc                     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_applyconfiguration_to_dict)r"