� w��g�g��t�UdZddlmZddlZddlZddlZddlmZddlm Z m Z ddlm Z m Z ddl mZmZmZmZmZmZmZddlmZdd lmZmZdd lmZmZd d lmZd d l m!Z!d dl"m#Z#m$Z$d dl%m&Z&ddlm'Z'erddl(m)Z)ddl*m+Z+ddl,m-Z-e.e/e0e/effZ1de2d< e.e/e1fZ3de2d< eddd��Z4 dEdFd#�Z5dGd%�Z6 dHdId*�Z7dJd/�Z8dKd2�Z9 dLdMd5�Z:dNd:�Z;Gd;�d<ee4��Z<Gd=�d>e<d��Z=Gd?�d@e<d��Z>GdA�dBe&��Z?GdC�dDe&��Z@dS)Oa< 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)�Iterable�Iterator)�partial�wraps)� TYPE_CHECKING�Any�Callable�ClassVar�Generic�TypeVar�cast)�default_environment)�InvalidRequirement� Requirement)�InvalidVersion�Version�)�_static)�StrPath)� FileError� OptionError)�SetuptoolsDeprecationWarning�)�expand)� TypeAlias�� Distribution)�DistributionMetadatar�SingleCommandOptions�AllCommandOptions�Targetrr F�filepathr� find_others�bool�ignore_option_errors�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$r%r'r�dist� filenames�handlerss �j/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/setuptools/config/setupcfg.py�read_configurationr32s^��$-�,�,�,�,�,� �<�>�>�D�,7�?��&�&�(�(�(�R�I��d�H�i�1E�F�F�H� �� *� *�*�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 r2�apply_configurationr7Ls+�� �4����������� �Kr4�� other_files�Iterable[StrPath]�2tuple[ConfigMetadataHandler, ConfigOptionsHandler]c�f�ddlm}tj�|��}tj�|��st d|�d����tj��}tjtj� |����g|�|�} |� |ttt|�����t||j|���}|���tj|��n#tj|��wxYw|S)zHRead configuration from ``filepath`` and applies to the ``dist`` object.r)� _DistributionzConfiguration file z does not exist.)r0)r')r+r=�os�path�abspath�isfiler�getcwd�chdir�dirname�parse_config_filesr�list�str�parse_configuration�command_options�_finalize_license_files)r/r$r9r'r=�current_directoryr0r1s r2r-r-Us"��.�-�-�-�-�-��w���x�(�(�H� �7�>�>�(� #� #�J��H�h�H�H�H�I�I�I�� � � ���H�R�W�_�_�X� &� &�'�'�'�(�+�(�x�(�I�$��(�(���d�3�i��9S�9S�(�T�T�T�&� �$�&�=Q� � � �� �$�$�&�&�&� ��"�#�#�#�#����"�#�#�#�#���� �Os �#A D�D.� target_obj�#Distribution | DistributionMetadata�keyrGc�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)rLrN� getter_name� by_attribute�getters r2� _get_optionrVts?�� ��,�,�K��$�W�j�#�>�>�L� �Z��l� ;� ;�F� �6�8�8�Or4r1�KIterable[ConfigHandler[Distribution] | ConfigHandler[DistributionMetadata]]c��tt��}|D]1}|jD]'}t|j|��}|||j|<�(�2|S)z�Returns configuration data gathered by given handlers as a dict. :param Iterable[ConfigHandler] handlers: Handlers list, usually from parse_configuration() :rtype: dict )rr)� set_optionsrVrL�section_prefix)r1� config_dict�handler�option�values r2r.r.�sk��$�D�)�)�K��@�@���)� @� @�F��� 2�F�;�;�E�:?�K��.� /�� 7� 7� @� �r4� distributionrIc ��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_rIr'�ensure_discovered�options�metas r2rHrH�s��$ � (�� 6� 6� �:K�&� � � � �  � �� � � �����'� ;�'.�':�L� $�$� � !� � � � � $� � !�  � �� � � � � � ��&�-�-� � %�t�'=� � � �+ � � � � � � � � � � ���� � � � �2 ��=�s�BB7�7B;�>B;�label� orig_value�parsedrFc����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�markerros �r2� <genexpr>z8_warn_accidental_env_marker_misconfig.<locals>.<genexpr>�s5�����B�B��v�a�y�#�#�F�+�+�B�B�B�B�B�Br4) �len� marker_env�keysr�name�_AmbiguousMarker�emitr�any�message)rmrnro�markersrs�ex�msgs ` r2�%_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�2�eZdZUdZded< iZded< d$d�Zed%d���Ze d���Z d&d�Z ed'd���Z ed���Z ed���Zed���Zd(d�Zd)d�Zed���Zed���Zed*d ���Zd&d!�Zd&d"�Zd#�ZdS)+� ConfigHandlerz1Handles metadata supplied in configuration files.rGrZzClassVar[dict[str, str]]�aliasesrLr#rkr"rj�expand.EnsurePackagesDiscoveredr(�Nonec���||_||_t|�|����|_g|_||_tt��|_ dS�N) r'rLr)�_section_options�sectionsrYrj�setrGrh)�selfrLrkr'rjs r2�__init__zConfigHandler.__init__�sZ��%9��!�",����T�2�2�7�;�;�<�<�� �&(���!2���!$�S������ � r4�*Iterator[tuple[str, SingleCommandOptions]]c#�K�|���D]?\}}|�|j��\}}}|r�&|�d��|fV��@dS)N�.)�items� partitionrZ�lstrip)�clsrk� full_namer^�pre�_sepr}s r2r�zConfigHandler._section_optionssu����!(� � ��� *� *� �I�u�'�1�1�#�2D�E�E�O�C��t�� ���+�+�c�"�"�E�)� )� )� )� )�  *� *r4c�:�t|jj�d����)�.Metadata item name to parser function mapping.z must provide .parsers property)�NotImplementedError� __class__�__name__)r�s r2�parserszConfigHandler.parserss'��"��~�&� G� G� G� � � r4c���|j}|j�||��} t||��}n"#t$r}t |��|�d}~wwxYw|rdS |j�|d���|��}n#tf|jz$rYdSwxYwtj |j |��}t|d|��|��}||��|j � |��dS)Nc��|Sr�r8)�xs r2�<lambda>z+ConfigHandler.__setitem__.<locals>.<lambda>&s��Q�r4�set_)rLr��getrR�AttributeError�KeyErrorr�� Exceptionr'rQr� __setattr__rY�append) r�� option_namer^rL� current_value�ero� simple_setter�setters r2� __setitem__zConfigHandler.__setitem__s'���_� ��l�&�&�{�K�@�@� � /�#�J� �<�<�M�M��� /� /� /��;�'�'�Q� .����� /���� � � �F� �?�T�\�%�%�k�;�;�?�?��F�F�F�F���|�d�7�7� � � � �F�F� ����"�)�*�*@�+�N�N� ���%9�K�%9�%9�=�I�I����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 rqc�^�g|]*}|����|�����+Sr8��strip)rw�chunks r2� <listcomp>z-ConfigHandler._parse_list.<locals>.<listcomp>Bs-��B�B�B�%�E�K�K�M�M�B�� � � � �B�B�Br4)� isinstancerF� splitlines�split)r�r^� separators r2� _parse_listzConfigHandler._parse_list0s\�� �e�T� "� "� ��L� �5�=�=��$�$�&�&�E�E��K�K� �*�*�E�B�B�5�B�B�B�Br4c���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�r^r��result�linerN�sep�vals r2� _parse_dictzConfigHandler._parse_dictDs���� ����O�O�E�*�*� .� .�D� �N�N�9�5�5�M�C��c��i���!�"R�5�"R�"R�S�S�S�"%�)�)�+�+�F�3�9�9�;�;� � �� r4c�2�|���}|dvS)zQRepresents value as boolean. :param value: :rtype: bool )�1�true�yes)�lower�r�r^s r2� _parse_boolzConfigHandler._parse_boolUs��� � � � ���,�,�,r4c����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���d}|�|��rtd��d����tj|��S)N�file:z"Only strings are accepted for the z field, files are not accepted)rv� ValueErrorr�Str)r^�exclude_directiverNs �r2�parserz3ConfigHandler._exclude_files_parser.<locals>.parserksZ��� '� ���� 1�2�2� � �-��-�-�-�����;�u�%�%� %r4r8)r�rNr�s ` r2�_exclude_files_parserz#ConfigHandler._exclude_files_parser_s#��� &� &� &� &� &�� r4�root_dir�StrPath | Nonec�t�d}t|t��s|S|�|��stj|��S|t |��d�}d�|�d��D��}|j�|��tjtj ||����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|]}|�����Sr8r�)rwr?s r2r�z-ConfigHandler._parse_file.<locals>.<listcomp>�s ��>�>�>�d�T�Z�Z�\�\�>�>�>r4r�) r�rGrvrr�rzr�rhrir� read_files)r�r^r��include_directive�spec� filepathss r2� _parse_filezConfigHandler._parse_filevs���$���%��%�%� ��L���� 1�2�2� &��;�u�%�%� %��S�*�+�+�-�-�.��>�>�d�j�j��o�o�>�>�>� � ��%�%�i�0�0�0��{�6�,�Y��A�A�B�B�Br4rc���d}|�|��stj|��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:�) rvrr��replacerirjrdr� read_attr)r�r^rdr��attr_directive� attr_descs r2� _parse_attrzConfigHandler._parse_attr�ss��!������/�/� &��;�u�%�%� %��M�M�.�"�5�5� � ���4�1�=�>�>�>��� �;��A�A�Ar4c����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�r8)r^ro�method� parse_methodss �r2rcz1ConfigHandler._get_parser_compound.<locals>.parse�s+����F�'� (� (����������Mr4r8)r�r�rcs ` r2�_get_parser_compoundz"ConfigHandler._get_parser_compound�s#��� � � � � �� r4c�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_parserr^rN�_r�s r2�_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�� r4Nc�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�r8)r��vr�s �r2r�z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>�s���}�}�Q�/�/�r4c��|Sr�r8)r�r�s r2r�z6ConfigHandler._parse_section_to_dict.<locals>.<lambda>�s��UV�r4)r�)r�r�r�r�s ` r2�_parse_section_to_dictz$ConfigHandler._parse_section_to_dict�s7���5B�W�/�/�/�/�/�����2�2�?�F�K�K�Kr4c��|���D]>\}\}}tjt��5|||<ddd��n #1swxYwY�?dS)zQParses configuration file section. :param dict section_options: N)r�� contextlib�suppressr�)r�r�r}r�r^s r2� parse_sectionzConfigHandler.parse_section�s��� !0� 5� 5� 7� 7� #� #� �D�*�1�e��$�X�.�.� #� #�"��T� � #� #� #� #� #� #� #� #� #� #� #���� #� #� #� #�� #� #s�A�A �A c���|j���D]^\}}d}|rd|��}t|d|���dd��d��}|�t d|j�d|�d����||���_dS) zTParses configuration file items from one or more related sections. r�r�r�r��__Nz*Unsupported distribution option section: [�])r�r�rRr�rrZ)r�� section_namer��method_postfix�section_parser_methods r2rczConfigHandler.parse�s��� .2�]�-@�-@�-B�-B� 3� 3� )�L�/��N�� 4�!3�\�!3�!3��5<��0��0�0�8�8��d�C�C�� 6�6� !�%�,�!�>��+�>�>�.:�>�>�>���� "� !�/� 2� 2� 2� 2�% 3� 3r4c �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 ���r2�config_handlerz@ConfigHandler._deprecated_config_handler.<locals>.config_handler�sH��� �M�M�,�� *� *� *� � "�#E�s� Q� Q�b� Q� Q� Q��4��(��(�(� (r4)r)r�rr�rrs ``` r2�_deprecated_config_handlerz(ConfigHandler._deprecated_config_handler�sB����� �t��� )� )� )� )� )� )� �� )� �r4)rLr#rkr"rjr�r(r�)rkr"r(r��r(r�)r�)r�r�)r�rr�)r�� __module__� __qualname__�__doc__�__annotations__r�r�� classmethodr��propertyr�r�r�r�r�r�r�r�r�r�r�r�rcrr8r4r2r�r��s��������;�;������ )+�G�*�*�*�*��  � � � �"�*�*�*��[�*�� � ��X� � -�-�-�-�4�C�C�C��[�C�&����[�� �-�-��[�-�����[��,C�C�C�C�6B�B�B�B�(����[��&� � ��[� �� L� L� L��[� L�#�#�#�#�3�3�3�3�2 � � � � r4r�c�d��eZdZdZddddd�ZdZ dejfd�fd� Ze d���Z d�Z �xZ S)rerf�url� description� classifiers� platforms)� home_page�summary� classifier�platformFNrLr rkr"r'r&rjr�rd� dict | Noner�r�r(r�c�l��t���||||��||_||_dSr�)�superr�rdr�)r�rLrkr'rjrdr�r�s �r2r�zConfigMetadataHandler.__init__s8��� ������W�.B�DU�V�V�V�&��� �� � � r4c��|�|jtj��}|�|jtj��}t |j|j���}|j }idtj �dtj �dtj �dtj �d|�d|�d|�d |�d |�||���d |d ���d |�d |�d|�dtj �d|j �dtj �d|�S)r��r��author� author_email� maintainer�maintainer_emailr�keywords�provides� obsoletesr�license� license_filesr�long_description�long_description_content_type�versionr� project_urls) r�r�r�Listr��Dictrr�r�r�r��_parse_version)r��parse_list_static�parse_dict_static� parse_file�exclude_files_parsers r2r�zConfigMetadataHandler.parsers%s^��!�5�5�d�6F�� �U�U�� �5�5�d�6F�� �U�U���T�-�� �F�F�F� �#�9�� � �g�k� � �G�K� � �'�+� � �� �  � �*�  � �)�  � �)� � �*� � �4�4�4�Z�AR�S�S� � �+�+�I�6�6� � �.� � �:� � � � � ,�W�[� � �t�*� � �7�;�! �" �-�# � r4c�H�|�||j��}||krO|���} t|��n(#t$r}t d|�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�rrrrr)r�rd)r�r^r)r�s r2r-z$ConfigMetadataHandler._parse_versionAs����"�"�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,)rLr rkr"r'r&rjr�rdrr�r�r(r�) r�r r rZr�� strict_moder>�curdirr�rr�r-� __classcell__�r�s@r2reres���������N�� �#�� ��G��K��$(�#%�9� !� !� !� !� !� !� !�� � ��X� �6X�X�X�X�X�X�Xr4rec���eZdZdZd�fd � Zed ���Zd �Zdd�Ze d���Z d�Z d�Z d�Z dd�Zd�Zdd�Zdd�Zdd�Zdd�Z�xZS)rbrkrLrr"r'r&rjr�r(r�c�v��t���||||��|j|_i|_dSr�)rr�rgr�rd)r�rLrkr'rjr�s �r2r�zConfigOptionsHandler.__init__^s=��� ������W�.B�DU�V�V�V�"�+�� �+-����r4c�0�|�|d���S)N�;)r�)r�r�s r2�_parse_list_semicolonz*ConfigOptionsHandler._parse_list_semicolonis�����u���4�4�4r4c�:�|�||j���S)Nr)r�r�)r�r^s r2�_parse_file_in_rootz(ConfigOptionsHandler._parse_file_in_rootms������� ��>�>�>r4rmrGr^c��|�|�|����}t|||��tjd�|D����S)Nc3�DK�|]}|�d���|V��dS)�#Nru)rwr�s r2ryz@ConfigOptionsHandler._parse_requirements_list.<locals>.<genexpr>vs3����P�P�T�4�?�?�3�;O�;O�P�D�P�P�P�P�P�Pr4)r;r=r�rr+)r�rmr^ros r2�_parse_requirements_listz-ConfigOptionsHandler._parse_requirements_listpsV���+�+�D�,D�,D�U�,K�,K�L�L��-�e�U�F�C�C�C��|�P�P�V�P�P�P�P�P�Pr4c���|j}|j}|j}|||j||||�|d��t |jd��|j|j|j |tj |d�S)r�zeThe namespace_packages parameter is deprecated, consider using implicit namespaces instead (PEP 420).�install_requires)�zip_safe�include_package_datard�scripts�eager_resources�dependency_links�namespace_packagesrC�setup_requires�packages� entry_points� py_modules�python_requires�cmdclass) r�r��_parse_cmdclassr�rrrAr;�_parse_packagesr=r� SpecifierSet)r�� parse_list� parse_bool�parse_cmdclasss r2r�zConfigOptionsHandler.parsersys����%� ��%� ��-��#�$.��+�!�)� *�"&�"A�"A��H�#�#� !(��-�/A�!�!�#�8��,� �4�$�&�3�&�+ � � r4c�v�|jj}tj|�|��||j��Sr�)rjrdrrOr�r�)r�r^rds r2rPz$ConfigOptionsHandler._parse_cmdclass�s1���,�8� ���t�/�/��6�6� �T�]�S�S�Sr4c�:�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_dirr8) r�r��parse_section_packages__findr�r�rir�rdr� find_packages)r�r^�find_directives� trimmed_value� find_kwargss r2rQz$ConfigOptionsHandler._parse_packages�s��� #�$5�6��� � � � � � �� /� /��#�#�E�*�*� *��7�7� �M� � �o�r� 2� 2� � � � ���%���);�;��]�!�-� � � � � �#�2�2�k�2�2�2r4c����|�||j��}gd���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�(��i|]\}}|�v� |� ||��Sr8r8)rw�kr�� valid_keyss �r2� <dictcomp>zEConfigOptionsHandler.parse_section_packages__find.<locals>.<dictcomp>�s)���V�V�V���1��Z���TU��q�!���r4r`Nr)r�r�r�r�)r�r�� section_datar^r`res @r2rZz1ConfigOptionsHandler.parse_section_packages__find�sx����2�2�?�D�DT�U�U� �4�4�4� �V�V�V�V� �(:�(:�(<�(<�V�V�V� �����(�(�� � �#(��8�K�� ��r4c�F�|�||j��}||d<dS)z`Parses `entry_points` configuration file section. :param dict section_options: rLN)r�r��r�r�ros r2�parse_section_entry_pointsz/ConfigOptionsHandler.parse_section_entry_points�s,�� �,�,�_�d�>N�O�O��%��^���r4c�`�|�||j��}tj|��Sr�)r�r�r�canonic_package_data)r�r�� package_datas r2�_parse_package_dataz(ConfigOptionsHandler._parse_package_data�s+���2�2�?�D�DT�U�U� ��*�<�8�8�8r4c�6�|�|��|d<dS)z`Parses `package_data` configuration file section. :param dict section_options: rmN�rn�r�r�s r2�parse_section_package_dataz/ConfigOptionsHandler.parse_section_package_data�s"�� $�7�7��H�H��^���r4c�6�|�|��|d<dS)zhParses `exclude_package_data` configuration file section. :param dict section_options: �exclude_package_dataNrprqs r2�"parse_section_exclude_package_dataz7ConfigOptionsHandler.parse_section_exclude_package_data�s#�� (,�'?�'?��'P�'P�� #�$�$�$r4c�h����|�fd���}tj|���d<dS)zbParses `extras_require` configuration file section. :param dict section_options: c�8����d|�d�|��S)Nzextras_require[r�)rA)rdr�r�s �r2r�zCConfigOptionsHandler.parse_section_extras_require.<locals>.<lambda>�s#����6�6�7M��7M�7M�7M�q�Q�Q�r4�extras_requireN)r�rr,ris` r2�parse_section_extras_requirez1ConfigOptionsHandler.parse_section_extras_require�sF��� �5�5� � Q� Q� Q� Q� � �� ")��f�!5�!5�� ���r4c�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�ris r2�parse_section_data_filesz-ConfigOptionsHandler.parse_section_data_files�s;�� �,�,�_�d�>N�O�O��#�6�v�t�}�M�M��\���r4) rLrrkr"r'r&rjr�r(r�)rmrGr^rGr )r�r r rZr�rr;r=rArr�rPrQrZrjrnrrruryr}r5r6s@r2rbrb[sR��������N� .� .� .� .� .� .��5�5��[�5�?�?�?�Q�Q�Q�Q�� � ��X� �<T�T�T�3�3�3�2���$&�&�&�&�9�9�9�I�I�I�I�Q�Q�Q�Q� 6� 6� 6� 6�N�N�N�N�N�N�N�Nr4rbc�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 r2r�z_AmbiguousMarker.messages0��F�s�}�F�F���{�{�3�<���t�QS�{�T�T�Tr4N)r�r r r�r�r�rr�r8r4r2r~r~�sG������.�H��H�:�I��U�U��[�U�U�Ur4r~c��eZdZdZdS)rz!userguide/declarative_config.htmlN)r�r r r�r8r4r2rr s������3�I�I�Ir4r)FF)r$rr%r&r'r&r(r))r/rr$rr(r)r8F) r/rr$rr9r:r'r&r(r;)rLrMrNrG)r1rWr(r))F)r_rrIr"r'r&r(r;)rmrGrnrGrorF)Ar � __future__rr�rQr>� collectionsr�collections.abcrrrr�typingr r r r r rr�packaging.markersrr{�packaging.requirementsrr�packaging.versionrrr�r�_pathr�errorsrr�warningsrr�typing_extensionsrr+r�distutils.distr r)rG�tupler!r r"r#r3r7r-rVr.rHr�r�rerbr~rr8r4r2�<module>r�s��� � � �#�"�"�"�"�"��������� � � � �#�#�#�#�#�#�.�.�.�.�.�.�.�.�$�$�$�$�$�$�$�$�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�?�?�?�?�?�?�B�B�B�B�B�B�B�B�5�5�5�5�5�5�5�5�������������+�+�+�+�+�+�+�+�3�3�3�3�3�3��������4�+�+�+�+�+�+�,�,�,�,�,�,�3�3�3�3�3�3�"&�s�E�#�s�(�O�';�"<��<�<�<�<�� $�C�)=�$=�>��>�>�>�>�� ���>�+A� B� B��PU�+�+�+�+�+�4����&(�!&� �����> � � � �����2"'�+�+�+�+�+�\2�2�2�2�@a�a�a�a�a�G�F�O�a�a�a�H PX�PX�PX�PX�PX�M�*@�A�PX�PX�PX�fYN�YN�YN�YN�YN�=��8�YN�YN�YN�xU�U�U�U�U�3�U�U�U�(4�4�4�4�4�4�4�4�4�4�4r4
Memory