Hacked By AnonymousFox

Current Path : /opt/cloudlinux/venv/lib64/python3.11/site-packages/setuptools/config/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/setuptools/config/__pycache__/setupcfg.cpython-311.pyc

�

�܋f�c��\�dZddlmZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZmZm
Z
mZmZmZmZmZmZdd	lmZdd
lmZmZddlmZddlmZmZdd
lm Z ddl!m"Z"m#Z#ddl$m%Z%ddl&m'Z'erddl(m)Z)ddl*m+Z+edede
ffZ,	ede,fZ-eded���Z.	dBdCd�Z/dDd �Z0		dEdFd'�Z1dGd*�Z2dHd,�Z3	dIdJd1�Z4dKd6�Z5Gd7�d8ee.��Z6Gd9�d:e6d;��Z7Gd<�d=e6d��Z8Gd>�d?e%��Z9Gd@�dAe%��Z:dS)La<
Load setuptools configuration from ``setup.cfg`` files.

**API will be made private in the future**

To read project metadata, consider using
``build.util.project_wheel_metadata`` (https://pypi.org/project/build/).
For simple scenarios, you can also try parsing the file directly
with the help of ``configparser``.
�)�annotationsN)�defaultdict)�partial��wraps)	�
TYPE_CHECKING�Callable�Any�Dict�Generic�Iterable�Tuple�TypeVar�Union�)�StrPath)�	FileError�OptionError)�default_environment)�InvalidRequirement�Requirement)�SpecifierSet)�InvalidVersion�Version)�SetuptoolsDeprecationWarning�)�expand)�DistributionMetadata��Distribution�str�Target)r r)�boundF�filepathr�return�dictc��ddlm}|��}|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
    rr)�setuptools.distr �find_config_files�_apply�configuration_to_dict)r$�find_others�ignore_option_errorsr �dist�	filenames�handlerss       �Q/opt/cloudlinux/venv/lib64/python3.11/site-packages/setuptools/config/setupcfg.py�read_configurationr28s^��$-�,�,�,�,�,��<�>�>�D�,7�?��&�&�(�(�(�R�I��d�H�i�1E�F�F�H� ��*�*�*�r.r c�N�t||��|���|S)z`Apply the configuration from a ``setup.cfg`` file into an existing
    distribution object.
    )r*�_finalize_requires)r.r$s  r1�apply_configurationr6Rs+���4������������Kr3��other_files�Iterable[StrPath]r-�bool�tuple[ConfigHandler, ...]c�*�ddlm}tj�|��}tj�|��st
d|�d����tj��}tjtj�	|����g|�|�}	|�
||���t||j|���}|�
��tj|��n#tj|��wxYw|S)zHRead configuration from ``filepath`` and applies to the ``dist`` object.r)�
_DistributionzConfiguration file z does not exist.)r/)r-)r(r=�os�path�abspath�isfiler�getcwd�chdir�dirname�parse_config_files�parse_configuration�command_options�_finalize_license_files)r.r$r8r-r=�current_directoryr/r0s        r1r*r*[s��.�-�-�-�-�-��w���x�(�(�H�
�7�>�>�(�#�#�J��H�h�H�H�H�I�I�I��	�����H�R�W�_�_�X�
&�
&�'�'�'�(�+�(�x�(�I�$��(�(���(�C�C�C�&��$�&�=Q�
�
�
��	
�$�$�&�&�&�
��"�#�#�#�#����"�#�#�#�#�����Os
�#AC:�:D�
target_obj�keyc�x�d|��}tjt||��}t|||��}|��S)z�
    Given a target object and option key, get that option from
    the target object, either through a get_{key} method or
    from an attribute directly.
    �get_)�	functoolsr�getattr)rJrK�getter_name�by_attribute�getters     r1�_get_optionrSys?����,�,�K��$�W�j�#�>�>�L�
�Z��l�
;�
;�F��6�8�8�Or3r0c��tt��}|D]1}|jD]'}t|j|��}|||j|<�(�2|S)z�Returns configuration data gathered by given handlers as a dict.

    :param list[ConfigHandler] handlers: Handlers list,
        usually from parse_configuration()

    :rtype: dict
    )rr&�set_optionsrSrJ�section_prefix)r0�config_dict�handler�option�values     r1r+r+�sk��$�D�)�)�K��@�@���)�	@�	@�F��� 2�F�;�;�E�:?�K��.�/��7�7�	@��r3�distributionrG�AllCommandOptions�2tuple[ConfigMetadataHandler, ConfigOptionsHandler]c	��tj|��5}t||||��}|���|js|j|_t|j||||j|j��}|���|j�	|j|j��ddd��n#1swxYwY||fS)a�Performs additional parsing of configuration options
    for a distribution.

    Returns a list of used option handlers.

    :param Distribution distribution:
    :param dict command_options:
    :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: list
    N)
r�EnsurePackagesDiscovered�ConfigOptionsHandler�parse�package_dir�ConfigMetadataHandler�metadata�src_root�_referenced_files�update)r[rGr-�ensure_discovered�options�metas      r1rFrF�s��$
�	(��	6�	6�
�:K�&��� ��	
�
��	�
�
�����'�	;�'.�':�L�$�$��!�� ���$��!�

�
��	
�
�
�����&�-�-��%�t�'=�	
�	
�	
�+
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�2��=�s�BB7�7B;�>B;�label�
orig_value�parsed�listc����d|vst���dkrdSt�����}	t�d��}|j|vr$t
�|�d���dSdS#t$rX}t�fd�|D����r2t
�	|�d���}t|��|�Yd}~dSd}~wwxYw)amBecause users sometimes misinterpret this configuration:

    [options.extras_require]
    foo = bar;python_version<"4"

    It looks like one requirement with an environment marker
    but because there is no newline, it's parsed as two requirements
    with a semicolon as separator.

    Therefore, if:
        * input string does not contain a newline AND
        * parsed result contains two requirements AND
        * parsing of the two parts from the result ("<first>;<second>")
        leads in a valid Requirement with a valid marker
    a UserWarning is shown to inform the user about the possible problem.
    �
rNr)�field�reqc3�N�K�|]}�d�|��V�� dS)rN��
startswith)�.0�markerrms  �r1�	<genexpr>z8_warn_accidental_env_marker_misconfig.<locals>.<genexpr>�s5�����B�B��v�a�y�#�#�F�+�+�B�B�B�B�B�Br3)
�len�
marker_env�keysr�name�_AmbiguousMarker�emitr�any�message)rkrlrm�markersrr�ex�msgs  `    r1�%_warn_accidental_env_marker_misconfigr��s���"�z���S��[�[�A�-�-����l�l���!�!�G�2��&��)�$�$���8�w����!�!��6�!�9�!�=�=�=�=�=�����2�2�2��B�B�B�B�'�B�B�B�B�B�	2�"�*�*��F�1�I�*�F�F�C�$�S�)�)�r�1�	2�	2�	2�	2�	2�	2�����2���s�AB�
C"�
A
C�C"c�.�eZdZUdZded<	iZded<	d"d�Zed#d
���Ze	d���Z
d�Zed$d���Zed���Z
ed���Zed���Zd%d�Zd%d�Zed���Zed���Zed&d���Zd�Zd'd �Zd!�ZdS)(�
ConfigHandlerz1Handles metadata supplied in configuration files.r!rVzdict[str, str]�aliasesrJr"rir\rh�expand.EnsurePackagesDiscoveredc��||_||_t|�|����|_g|_||_t��|_dS�N)	r-rJr&�_section_options�sectionsrUrh�setrf)�selfrJrir-rhs     r1�__init__zConfigHandler.__init__�sV��%9��!�$����T�2�2�7�;�;�<�<��
�&(���!2���+.�5�5���	�	r3c#�K�|���D]?\}}|�|j��\}}}|r�&|�d��|fV��@dS)N�.)�items�	partitionrV�lstrip)�clsri�	full_namerZ�pre�sepr|s       r1r�zConfigHandler._section_optionsss���� '�
�
���	*�	*��I�u�&�0�0��1C�D�D�N�C��d��
���+�+�c�"�"�E�)�)�)�)�)�		*�	*r3c�:�td|jjz���)�.Metadata item name to parser function mapping.z!%s must provide .parsers property)�NotImplementedError�	__class__�__name__)r�s r1�parserszConfigHandler.parserss#��"�/�$�.�2I�I�
�
�	
r3c���|j}|j�||��}	t||��}n"#t$r}t|��|�d}~wwxYw|rdS	|j�|d���|��}n#tf|jz$rYdSwxYwtj
|j|��}t|d|z|��}||��|j�
|��dS)Nc��|Sr�r7)�xs r1�<lambda>z+ConfigHandler.__setitem__.<locals>.<lambda>%s��Q�r3zset_%s)rJr��getrO�AttributeError�KeyErrorr��	Exceptionr-rNr�__setattr__rU�append)	r��option_namerZrJ�
current_value�erm�
simple_setter�setters	         r1�__setitem__zConfigHandler.__setitem__s#���_�
��l�&�&�{�K�@�@��	/�#�J��<�<�M�M���	/�	/�	/��;�'�'�Q�.�����	/�����	��F�	�?�T�\�%�%�k�;�;�?�?��F�F�F�F���|�d�7�7�	�	�	��F�F�	����"�)�*�*@�+�N�N�
���X��%;�]�K�K����v���������,�,�,�,�,s&�5�
A�A�A�%B�B�B�,c��t|t��r|Sd|vr|���}n|�|��}d�|D��S)z�Represents value as a list.

        Value is split either by separator (defaults to comma) or by lines.

        :param value:
        :param separator: List items separator character.
        :rtype: list
        rpc�^�g|]*}|����|�����+Sr7��strip)rv�chunks  r1�
<listcomp>z-ConfigHandler._parse_list.<locals>.<listcomp>As-��B�B�B�%�E�K�K�M�M�B����
�
�B�B�Br3)�
isinstancern�
splitlines�split)r�rZ�	separators   r1�_parse_listzConfigHandler._parse_list/s\���e�T�"�"�	��L��5�=�=��$�$�&�&�E�E��K�K�	�*�*�E�B�B�5�B�B�B�Br3c���d}i}|�|��D]\}|�|��\}}}||krtd|�����|���||���<�]|S)zPRepresents value as a dict.

        :param value:
        :rtype: dict
        �=z&Unable to parse option value to dict: )r�r�rr�)r�rZr��result�linerKr��vals        r1�_parse_dictzConfigHandler._parse_dictCs����	����O�O�E�*�*�	.�	.�D� �N�N�9�5�5�M�C��c��i���!�"R�5�"R�"R�S�S�S�"%�)�)�+�+�F�3�9�9�;�;����
r3c�2�|���}|dvS)zQRepresents value as boolean.

        :param value:
        :rtype: bool
        )�1�true�yes)�lower�r�rZs  r1�_parse_boolzConfigHandler._parse_boolTs�����
�
���,�,�,r3c����fd�}|S)z�Returns a parser function to make sure field inputs
        are not files.

        Parses a value after getting the key so error messages are
        more informative.

        :param key:
        :rtype: callable
        c�z��d}|�|��r"td�������|S)N�file:zCOnly strings are accepted for the {0} field, files are not accepted)ru�
ValueError�format)rZ�exclude_directiverKs  �r1�parserz3ConfigHandler._exclude_files_parser.<locals>.parserjsI��� '����� 1�2�2�
� �-�-3�V�C�[�[�����Lr3r7)r�rKr�s ` r1�_exclude_files_parserz#ConfigHandler._exclude_files_parser^s#���	�	�	�	�	��
r3�root_dirrc�,�d}t|t��s|S|�|��s|S|t|��d�}d�|�d��D��}|j�|��tj||��S)aORepresents value as a string, allowing including text
        from nearest files using `file:` directive.

        Directive is sandboxed and won't reach anything outside
        directory with setup.py.

        Examples:
            file: README.rst, CHANGELOG.md, src/file.txt

        :param str value:
        :rtype: str
        r�Nc�6�g|]}|�����Sr7r�)rvr?s  r1r�z-ConfigHandler._parse_file.<locals>.<listcomp>�s ��>�>�>�d�T�Z�Z�\�\�>�>�>r3r�)	r�r!ruryr�rfrgr�
read_files)r�rZr��include_directive�spec�	filepathss      r1�_parse_filezConfigHandler._parse_fileus���$���%��%�%�	��L���� 1�2�2�	��L��S�*�+�+�-�-�.��>�>�d�j�j��o�o�>�>�>�	���%�%�i�0�0�0�� ��H�5�5�5r3c���d}|�|��s|S|�|d��}|�|jj��tj|||��S)z�Represents value as a module attribute.

        Examples:
            attr: package.attr
            attr: package.module.attr

        :param str value:
        :rtype: str
        zattr:�)ru�replacergrhrbr�	read_attr)r�rZrbr��attr_directive�	attr_descs      r1�_parse_attrzConfigHandler._parse_attr�sh��!������/�/�	��L��M�M�.�"�5�5�	�	���4�1�=�>�>�>���	�;��A�A�Ar3c����fd�}|S)z�Returns parser function to represents value as a list.

        Parses a value applying given methods one after another.

        :param parse_methods:
        :rtype: callable
        c�,��|}�D]
}||��}�|Sr�r7)rZrm�method�
parse_methodss   �r1raz1ConfigHandler._get_parser_compound.<locals>.parse�s+����F�'�
(�
(����������Mr3r7)r�r�ras ` r1�_get_parser_compoundz"ConfigHandler._get_parser_compound�s#���	�	�	�	�	��r3c�b�i}|���D]\}\}}|||��||<�|S)aParses section options into a dictionary.

        Applies a given parser to each option in a section.

        :param dict section_options:
        :param callable values_parser: function with 2 args corresponding to key, value
        :rtype: dict
        )r�)r��section_options�
values_parserrZrK�_r�s       r1�_parse_section_to_dict_with_keyz-ConfigHandler._parse_section_to_dict_with_key�sH����,�2�2�4�4�	1�	1�M�C��!�S�&��s�C�0�0�E�#�J�J��r3Nc�D���r�fd�nd�}|�||��S)aParses section options into a dictionary.

        Optionally applies a given parser to each value.

        :param dict section_options:
        :param callable values_parser: function with 1 arg corresponding to option value
        :rtype: dict
        c����|��Sr�r7)r��vr�s  �r1r�z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>�s���}�}�Q�/�/�r3c��|Sr�r7)r�r�s  r1r�z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>�s��UV�r3�r�)r�r�r�r�s  ` r1�_parse_section_to_dictz$ConfigHandler._parse_section_to_dict�s7���5B�W�/�/�/�/�/�����2�2�?�F�K�K�Kr3c��|���D]>\}\}}tjt��5|||<ddd��n#1swxYwY�?dS)zQParses configuration file section.

        :param dict section_options:
        N)r��
contextlib�suppressr�)r�r�r|r�rZs     r1�
parse_sectionzConfigHandler.parse_section�s���
!0� 5� 5� 7� 7�	#�	#��D�*�1�e��$�X�.�.�
#�
#�"��T�
�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��	#�	#s�A�A	�A	r%�Nonec��|j���D]^\}}d}|rd|z}t|d|z�dd��d��}|�t	d|j�d|�d����||���_dS)	zTParses configuration file items from one
        or more related sections.

        r�z_%szparse_section%sr��__Nz*Unsupported distribution option section: [�])r�r�rOr�rrV)r��section_namer��method_postfix�section_parser_methods     r1razConfigHandler.parse�s���
.2�]�-@�-@�-B�-B�	3�	3�)�L�/��N��
6�!&��!5��5<��"�^�3�<�<�S�$�G�G��	6�6�!�%�,�!�>��+�>�>�.:�>�>�>����

"�!�/�2�2�2�2�%	3�	3r3c�D����t������fd���}|S)z�this function will wrap around parameters that are deprecated

        :param msg: deprecation message
        :param func: function to be wrapped around
        c�f����dd��tjd�fi����|i|��S)N�
stacklevelrz Deprecated config in `setup.cfg`)�
setdefault�_DeprecatedConfigr~)�args�kwargs�func�kwr�s  ���r1�config_handlerz@ConfigHandler._deprecated_config_handler.<locals>.config_handler�sH����M�M�,��*�*�*��"�#E�s�Q�Q�b�Q�Q�Q��4��(��(�(�(r3r)r�rr�rrs ``` r1�_deprecated_config_handlerz(ConfigHandler._deprecated_config_handler�sB�����
�t���	)�	)�	)�	)�	)�	)�
��	)�
�r3)rJr"rir\rhr�)rir\)r�)r�rr�)r%r�)r��
__module__�__qualname__�__doc__�__annotations__r�r��classmethodr��propertyr�r�r�r�r�r�r�r�r�r�r�r�rarr7r3r1r�r��s��������;�;������
!�G� � � � ������"�*�*�*��[�*��
�
��X�
�-�-�-�4�C�C�C��[�C�&����[�� �-�-��[�-�����[��,6�6�6�6�4B�B�B�B�(����[��&����[���
L�
L�
L��[�
L�#�#�#�3�3�3�3�2
�
�
�
�
r3r�c�d��eZdZdZddddd�ZdZ	dejfd�fd�
Ze	d���Z
d�Z�xZS)rcrd�url�description�classifiers�	platforms)�	home_page�summary�
classifier�platformFNrJrrir\r-r:rhr�rb�dict | Noner�rc�l��t���||||��||_||_dSr�)�superr�rbr�)r�rJrir-rhrbr�r�s       �r1r�zConfigMetadataHandler.__init__s8���	������W�.B�DU�V�V�V�&��� ��
�
�
r3c���|j}t|j|j���}|j}|j}|||||�||��|d��||||j|d�S)r��r��license)r�keywords�provides�	obsoletesrr�
license_filesr
�long_description�version�project_urls)r�rr�r�r�r�r��_parse_version)r��
parse_list�
parse_file�
parse_dict�exclude_files_parsers     r1r�zConfigMetadataHandler.parsers#s����%�
��T�-��
�F�F�F�
��%�
�#�9��$�"�"�#��4�4�Z��L�L�+�+�I�6�6�'�%� *��*�&�
�
�	
r3c�H�|�||j��}||krO|���}	t|��n(#t$r}td|�d|����|�d}~wwxYw|St
j|�||j	|j����S)zSParses `version` option value.

        :param value:
        :rtype: str

        zVersion loaded from z does not comply with PEP 440: N)
r�r�r�rrrrrr�rb)r�rZrr�s    r1r!z$ConfigMetadataHandler._parse_version9s����"�"�5�$�-�8�8���e����m�m�o�o�G�
��� � � � ��!�
�
�
�!�6�5�6�6�,3�6�6���������
�����N��~�d�.�.�u�d�6F��
�V�V�W�W�Ws�A�
A,�A'�'A,)rJrrir\r-r:rhr�rbrr�r)
r�rrrVr��strict_moder>�curdirr�r
r�r!�
__classcell__�r�s@r1rcrcs���������N�� �#��	��G��K��$(��I�!�!�!�!�!�!�!��
�
��X�
�*X�X�X�X�X�X�Xr3rcrc���eZdZdZd�fd	�Zed
���Zd�Zdd�Ze	d���Z
d�Zd�Zd�Z
d�Zd�Zd�Zd�Zd�Zd�Z�xZS)r`rirJr r\r-r:rhr�c�v��t���||||��|j|_i|_dSr�)rr�rer�rb)r�rJrir-rhr�s     �r1r�zConfigOptionsHandler.__init__Vs=���	������W�.B�DU�V�V�V�"�+��
�+-����r3c�0�|�|d���S)N�;)r�)r�r�s  r1�_parse_list_semicolonz*ConfigOptionsHandler._parse_list_semicolonas�����u���4�4�4r3c�:�|�||j���S)Nr)r�r�)r�rZs  r1�_parse_file_in_rootz(ConfigOptionsHandler._parse_file_in_rootes�������
��>�>�>r3rkr!rZc��|�|�|����}t|||��d�|D��S)Nc�<�g|]}|�d���|��S)�#rt)rvr�s  r1r�zAConfigOptionsHandler._parse_requirements_list.<locals>.<listcomp>ns)��D�D�D��t���s�/C�/C�D��D�D�Dr3)r/r1r�)r�rkrZrms    r1�_parse_requirements_listz-ConfigOptionsHandler._parse_requirements_listhsL���+�+�D�,D�,D�U�,K�,K�L�L��-�e�U�F�C�C�C�E�D��D�D�D�Dr3c���|j}|j}|j}|j}|||||||�|d��t|jd��|j|j|j|j	|t|d�S)r�zeThe namespace_packages parameter is deprecated, consider using implicit namespaces instead (PEP 420).�install_requires)�zip_safe�include_package_datarb�scripts�eager_resources�dependency_links�namespace_packagesr7�setup_requires�
tests_require�packages�entry_points�
py_modules�python_requires�cmdclass)r�r�r��_parse_cmdclassrrr5r/�_parse_packagesr1r)r�r"�
parse_boolr$�parse_cmdclasss     r1r�zConfigOptionsHandler.parsersps����%�
��%�
��%�
��-��#�$.�%�!�)� *�"&�"A�"A��H�#�#�!(��-�/A�!�!�#�8�!�7��,� �4�$�+�&�-
�
�	
r3c�v�|jj}tj|�|��||j��Sr�)rhrbrrDr�r�)r�rZrbs   r1rEz$ConfigOptionsHandler._parse_cmdclass�s1���,�8����t�/�/��6�6��T�]�S�S�Sr3c�:�ddg}|���}||vr|�|��S|�|j�di����}|�||dk|j|j���tj	di|��S)zTParses `packages` option value.

        :param value:
        :rtype: list
        zfind:zfind_namespace:z
packages.findr)�
namespacesr��fill_package_dirr7)
r�r��parse_section_packages__findr�r�rgr�rbr�
find_packages)r�rZ�find_directives�
trimmed_value�find_kwargss     r1rFz$ConfigOptionsHandler._parse_packages�s���#�$5�6�����
�
�
���/�/��#�#�E�*�*�*��7�7��M���o�r�2�2�
�
��	���%���);�;��]�!�-�	�	
�	
�	
��#�2�2�k�2�2�2r3c����|�||j��}gd��t�fd�|���D����}|�d��}|�|d|d<|S)z�Parses `packages.find` configuration file section.

        To be used in conjunction with _parse_packages().

        :param dict section_options:
        )�where�include�excludec�*��g|]\}}|�v�	|�||f��Sr7r7)rv�kr��
valid_keyss   �r1r�zEConfigOptionsHandler.parse_section_packages__find.<locals>.<listcomp>�s1���
�
�
��q�!�q�J���1��Q��F���r3rSNr)r�r�r&r�r�)r�r��section_datarQrSrXs     @r1rMz1ConfigOptionsHandler.parse_section_packages__find�s�����2�2�?�D�DT�U�U��4�4�4�
��
�
�
�
�+�1�1�3�3�
�
�
��������(�(����#(��8�K�� ��r3c�F�|�||j��}||d<dS)z`Parses `entry_points` configuration file section.

        :param dict section_options:
        rAN)r�r��r�r�rms   r1�parse_section_entry_pointsz/ConfigOptionsHandler.parse_section_entry_points�s,��
�,�,�_�d�>N�O�O��%��^���r3c�`�|�||j��}tj|��Sr�)r�r�r�canonic_package_data)r�r��package_datas   r1�_parse_package_dataz(ConfigOptionsHandler._parse_package_data�s+���2�2�?�D�DT�U�U���*�<�8�8�8r3c�6�|�|��|d<dS)z`Parses `package_data` configuration file section.

        :param dict section_options:
        r_N�r`�r�r�s  r1�parse_section_package_dataz/ConfigOptionsHandler.parse_section_package_data�s"��
 $�7�7��H�H��^���r3c�6�|�|��|d<dS)zhParses `exclude_package_data` configuration file section.

        :param dict section_options:
        �exclude_package_dataNrbrcs  r1�"parse_section_exclude_package_dataz7ConfigOptionsHandler.parse_section_exclude_package_data�s#��
(,�'?�'?��'P�'P��
#�$�$�$r3c�D����|�fd���}|�d<dS)zbParses `extras_require` configuration file section.

        :param dict section_options:
        c�8����d|�d�|��S)Nzextras_require[r�)r5)rWr�r�s  �r1r�zCConfigOptionsHandler.parse_section_extras_require.<locals>.<lambda>�s#����6�6�7M��7M�7M�7M�q�Q�Q�r3�extras_requireNr�r[s`  r1�parse_section_extras_requirez1ConfigOptionsHandler.parse_section_extras_require�s<���
�5�5��Q�Q�Q�Q�
�
��
"(��
���r3c�v�|�||j��}tj||j��|d<dS)z^Parses `data_files` configuration file section.

        :param dict section_options:
        �
data_filesN)r�r�r�canonic_data_filesr�r[s   r1�parse_section_data_filesz-ConfigOptionsHandler.parse_section_data_files�s;��
�,�,�_�d�>N�O�O��#�6�v�t�}�M�M��\���r3)rJr rir\r-r:rhr�)rkr!rZr!)r�rrrVr�r	r/r1r5r
r�rErFrMr\r`rdrgrkror)r*s@r1r`r`Ss7��������N�	.�	.�	.�	.�	.�	.��5�5��[�5�?�?�?�E�E�E�E��
�
��X�
�@T�T�T�3�3�3�2���*&�&�&�9�9�9�I�I�I�Q�Q�Q�
(�
(�
(�N�N�N�N�N�N�Nr3r`c�0�eZdZdZdZdZed���ZdS)r}zAmbiguous requirement marker.z�
    One of the parsed requirements in `{field}` looks like a valid environment marker:

        {req!r}

    Please make sure that the configuration file is correct.
    You can use dangling lines to avoid this problem.
    z'userguide/declarative_config.html#opt-2c�\�d|j��}|�|j|j||���S)Nz%https://setuptools.pypa.io/en/latest/)�see_url�format_args)�	_SEE_DOCS�_format�_SUMMARY�_DETAILS)r�r�docss   r1r�z_AmbiguousMarker.messages0��F�s�}�F�F���{�{�3�<���t�QS�{�T�T�Tr3N)r�rrrvrwrtr	r�r7r3r1r}r}�sG������.�H��H�:�I��U�U��[�U�U�Ur3r}c��eZdZdZdS)r�z!userguide/declarative_config.htmlN)r�rrrtr7r3r1r�r�s������3�I�I�Ir3r�)FF)r$rr%r&)r.r r$rr%r )r7F)
r.r r$rr8r9r-r:r%r;)rJr"rKr!)r0r;r%r&)F)r[r rGr\r%r])rkr!rlr!rmrn);r�
__future__rr�rNr>�collectionsrrr�typingrr	r
rrr
rrr�_pathr�errorsrr�extern.packaging.markersrrz�extern.packaging.requirementsrr�extern.packaging.specifiersr�extern.packaging.versionrr�warningsrr�r�distutils.distrr(r �SingleCommandOptionsr\r"r2r6r*rSr+rFr�r�rcr`r}r�r7r3r1�<module>r�s���	�	�#�"�"�"�"�"���������	�	�	�	�#�#�#�#�#�#�������������
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�������+�+�+�+�+�+�+�+�H�H�H�H�H�H�K�K�K�K�K�K�K�K�6�6�6�6�6�6�>�>�>�>�>�>�>�>�3�3�3�3�3�3��������-�3�3�3�3�3�3�,�,�,�,�,�,��E�5����#4�4�5���
�� 4�4�5��	����'M�!N�	O�	O�	O��@E�+�+�+�+�+�4����&(�!&�	�����<	�	�	�	�����*�+�+�+�+�+�\2�2�2�2�@^�^�^�^�^�G�F�O�^�^�^�B	JX�JX�JX�JX�JX�M�*@�A�JX�JX�JX�Z\N�\N�\N�\N�\N�=��8�\N�\N�\N�~U�U�U�U�U�3�U�U�U�(4�4�4�4�4�4�4�4�4�4�4r3

Hacked By AnonymousFox1.0, Coded By AnonymousFox