� ,�Re�L���dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z mZmZmZmZddlZddlZddlmZddlmZddlmZdd lmZdd lmZgd �Zejd d ��� ��Z!de!�"dd��vZ#Gd�de$��Z%Gd�dej&j'��Z'ej(d���Z)d�Z*d�Z+d�Z,ej(d���Z-ee e.ee.ee.dffZ/ Gd�d��Z0Gd�de0��Z1Gd�de1��Z2e1��Z3e3j4Z4e3j5Z5e3j6Z6e3j7Z7e3j8Z8e#se3j9Z9e3j:Z:e3j;Z;e2��Zz+no_install_setup_requires..es��t�r$N)� setuptools�_install_setup_requires)r3s r"�no_install_setup_requiresr>\sK���� � -�D�);�);�J�&�2� ����-1� �*�*�*��T� �*�1�1�1�1s�/�=c�D���fd�tj���D��S)Nc���g|]A}tj�tj��|�����?|��BSr()�os�path�isdir�join)�.0�name�a_dirs �r"� z1_get_immediate_subdirectories..msK��� 9� 9� 9�T��w�}�}�R�W�\�\�%��6�6�7�7� 9�D� 9� 9� 9r$)rA�listdir)rGs`r"�_get_immediate_subdirectoriesrJls7��� 9� 9� 9� 9�R�Z��.�.� 9� 9� 9�9r$c����fd�tj|��D��} |\}n#t$rtd���wxYw|S)Nc3�F�K�|]}|�����|V��dSr��endswith)rE�f� extensions �r"� z'_file_with_extension..rsI�������� �:�:�i� � �� ������r$z[No distribution was found. Ensure that `setup.py` is not empty and that it calls `setup()`.)rArI� ValueError)� directoryrP�matching�files ` r"�_file_with_extensionrVqs|��������:�i�(�(����H�9������ �9�9�9�� 8�9�9� 9�9���� �Ks �(�Ac��tj�|��stjd��St t dt��|��S)Nz%from setuptools import setup; setup()�open)rArB�exists�io�StringIO�getattr�tokenizerX�� setup_scripts r"�_open_setup_scriptr`sF�� �7�>�>�,� '� '�E��{�C�D�D�D� *�7�8�V�T� *� *�<� 8� 8�8r$c#�K�tj��5tjdd��dV�ddd��dS#1swxYwYdS)N�ignorezsetup.py install is deprecated)�warnings�catch_warnings�filterwarningsr(r$r"�suppress_known_deprecationrf�s����� � � "� "������*J�K�K�K� ������������������������s�=�A�Ac��eZdZdZdededeefd�Zd�Zdede efd�Z dede efd�Z dede efd �Z dede efd �Z d S) �_ConfigSettingsTranslatorz�Translate ``config_settings`` into distutils-style command arguments. Only a limited number of options is currently supported. �key�config_settings�returnc��|pi}|�|��pg}t|t��rtj|��n|S)aA Get the value of a specific key in ``config_settings`` as a list of strings. >>> fn = _ConfigSettingsTranslator()._get_config >>> fn("--global-option", None) [] >>> fn("--global-option", {}) [] >>> fn("--global-option", {'--global-option': 'foo'}) ['foo'] >>> fn("--global-option", {'--global-option': ['foo']}) ['foo'] >>> fn("--global-option", {'--global-option': 'foo'}) ['foo'] >>> fn("--global-option", {'--global-option': 'foo bar'}) ['foo', 'bar'] )�get� isinstance�str�shlex�split)r!rirj�cfg�optss r"� _get_configz%_ConfigSettingsTranslator._get_config�sF��$�#����w�w�s�|�|�!�r��$.�t�S�$9�$9�C�u�{�4� � � �t�Cr$c�Z�d�tjjjD��}d�|D��S)z>Global options accepted by setuptools (e.g. quiet or verbose).c3�*K�|]}|dd�V��dS)N�r()rE�opts r"rQzB_ConfigSettingsTranslator._valid_global_options..�s*����R�R�s�3�r��r�7�R�R�R�R�R�Rr$c� �h|] }|D]}|�|��� Sr(r()rE�long_and_short�flags r"� zB_ConfigSettingsTranslator._valid_global_options..�s+��V�V�V��~�V�V�t�QU�V��V�V�V�Vr$)r<�distr*�global_options)r!�optionss r"�_valid_global_optionsz/_ConfigSettingsTranslator._valid_global_options�s1��R�R�j�o�&B�&Q�R�R�R��V�V�7�V�V�V�Vr$c#� �K�|pi}hd�}d|vsd|vrUt|�d��p|�d��pd��}|���|vrdndV�d|vsd|vrUt|�d��p|�d��pd��}|���|vrdndV�|����|�d |��}�fd �|D��Ed {V��d S) a� Let the user specify ``verbose`` or ``quiet`` + escape hatch via ``--global-option``. Note: ``-v``, ``-vv``, ``-vvv`` have similar effects in setuptools, so we just have to cover the basic scenario ``-v``. >>> fn = _ConfigSettingsTranslator()._global_args >>> list(fn(None)) [] >>> list(fn({"verbose": "False"})) ['-q'] >>> list(fn({"verbose": "1"})) ['-v'] >>> list(fn({"--verbose": None})) ['-v'] >>> list(fn({"verbose": "true", "--global-option": "-q --no-user-cfg"})) ['-v', '-q', '--no-user-cfg'] >>> list(fn({"--quiet": None})) ['-q'] >�0�no�off�false�verbosez --verbose�1z-qz-v�quietz--quiet�--global-optionc3�J�K�|]}|�d���v�|V��dS)rN)�strip)rE�arg�valids �r"rQz9_ConfigSettingsTranslator._global_args..�s7�����C�C�C�3�9�9�S�>�>�U�+B�+B�C�+B�+B�+B�+B�C�Cr$N)rorm�lowerr�rt)r!rjrr�falsey�level�argsr�s @r"� _global_argsz&_ConfigSettingsTranslator._global_args�sA�����*�#���,�,�,�� �� � �{�c�1�1����� �*�*�I�c�g�g�k�.B�.B�I�c�J�J�E� �;�;�=�=�F�2�2�4�4�� =� =� =� �c�>�>�Y�#�-�-������(�(�E�C�G�G�I�,>�,>�E�#�F�F�E� �;�;�=�=�F�2�2�4�4�� =� =� =��*�*�,�,����� 1�?�C�C��C�C�C�C�4�C�C�C�C�C�C�C�C�C�C�C�Cr$c#�K�|pi}d|vr,tt|dpd����}|rdndV�d|vrdt|d��gEd{V��dSdS)a� The ``dist_info`` command accepts ``tag-date`` and ``tag-build``. .. warning:: We cannot use this yet as it requires the ``sdist`` and ``bdist_wheel`` commands run in ``build_sdist`` and ``build_wheel`` to re-use the egg-info directory created in ``prepare_metadata_for_build_wheel``. >>> fn = _ConfigSettingsTranslator()._ConfigSettingsTranslator__dist_info_args >>> list(fn(None)) [] >>> list(fn({"tag-date": "False"})) ['--no-date'] >>> list(fn({"tag-date": None})) ['--no-date'] >>> list(fn({"tag-date": "true", "tag-build": ".a"})) ['--tag-date', '--tag-build', '.a'] ztag-dater�z --tag-datez --no-datez tag-buildz --tag-buildN)rro)r!rjrr�vals r"�__dist_info_argsz*_ConfigSettingsTranslator.__dist_info_args�s�����&�#��� �� � ��C��J�� :�7�;�;�<�<�C�#&�7�<�<�K� 8� 8� 8� �#� � �%�s�3�{�+;�'<�'<�=� =� =� =� =� =� =� =� =� =� � r$c#�K�|pi}|�d��p|�d��}|sdSdt|��gEd{V��dS)a The ``editable_wheel`` command accepts ``editable-mode=strict``. >>> fn = _ConfigSettingsTranslator()._editable_args >>> list(fn(None)) [] >>> list(fn({"editable-mode": "strict"})) ['--mode', 'strict'] z editable-mode� editable_modeNz--mode)rmro)r!rjrr�modes r"�_editable_argsz(_ConfigSettingsTranslator._editable_args�sj�����#����w�w��'�'�C�3�7�7�?�+C�+C��� � �F��c�$�i�i�(�(�(�(�(�(�(�(�(�(r$c#�LK�|�d|��}|���}g}|D]2}|�d��|vr|�|��|V��3|�d|��Ed{V��|r"d|�d�}t j|t ��dSdS)aV Users may expect to pass arbitrary lists of arguments to a command via "--global-option" (example provided in PEP 517 of a "escape hatch"). >>> fn = _ConfigSettingsTranslator()._arbitrary_args >>> list(fn(None)) [] >>> list(fn({})) [] >>> list(fn({'--build-option': 'foo'})) ['foo'] >>> list(fn({'--build-option': ['foo']})) ['foo'] >>> list(fn({'--build-option': 'foo'})) ['foo'] >>> list(fn({'--build-option': 'foo bar'})) ['foo', 'bar'] >>> warnings.simplefilter('error', SetuptoolsDeprecationWarning) >>> list(fn({'--global-option': 'foo'})) # doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): SetuptoolsDeprecationWarning: ...arguments given via `--global-option`... r�rz--build-optionNz The arguments z� were given via `--global-option`. Please use `--build-option` instead, `--global-option` is reserved to flags like `--verbose` or `--quiet`. )rtr�r��appendrc�warnr )r!rjr�� global_opts�bad_argsr��msgs r"�_arbitrary_argsz)_ConfigSettingsTranslator._arbitrary_args s�����.��� 1�?�C�C���0�0�2�2� ���� � �C��y�y��~�~�[�0�0�����$�$�$�� � � ���#�#�$4�o�F�F�F�F�F�F�F�F�F� � =��#����C� �M�#�;� <� <� <� <� <�  =� =r$N)r%r&r'�__doc__ro�_ConfigSettingsrrtr�rr��)_ConfigSettingsTranslator__dist_info_argsr�r�r(r$r"rhrh�s�������� D�s�D�_�D��c��D�D�D�D�,W�W�W� D�O� D��� � D� D� D� D�D>��>�H�S�M�>�>�>�>�4)�o�)�(�3�-�)�)�)�)� (=��(=�8�C�=�(=�(=�(=�(=�(=�(=r$rhc���eZdZd�Zdd�Zdd�Zdd�Zdeded efd �Zdeded e fd �Z dd �Z d �Z dd�Z dd�Zdeed eefd�Zes dd�Zdd�Z dd�ZdSdS)�_BuildMetaBackendc�n�gtjdd��|�|���d�|�|���t_ t���5|���ddd��n #1swxYwYn!#t$r}||jz }Yd}~nd}~wwxYw|S)Nr �egg_info) �sys�argvr�r�r*r4� run_setuprr )r!rj� requirements�es r"�_get_build_requiresz%_BuildMetaBackend._get_build_requires7s�� � �X�b�q�b�\� � � � �� /� /� � � �� !� !�/� 2� 2�  ���  )��#�#�%�%� !� !���� � � � !� !� !� !� !� !� !� !� !� !� !���� !� !� !� !���%� )� )� )� �A�L� (�L�L�L�L�L�L����� )�����s<�B�'B�< B�B � B�B �B� B2� B-�-B2�setup.pyc���|}d}t|��5}|����dd��}ddd��n #1swxYwYt|t ����dS)N�__main__z\r\nz\n)r`�read�replace�exec�locals)r!r_�__file__r%rO�codes r"r�z_BuildMetaBackend.run_setupFs��� ���� �� )� )� 4�Q��6�6�8�8�#�#�G�U�3�3�D� 4� 4� 4� 4� 4� 4� 4� 4� 4� 4� 4���� 4� 4� 4� 4� �T�6�8�8�����s�)A � A �A Nc�2�|�|dg���S)N�wheel�r��r��r!rjs r"rz._BuildMetaBackend.get_requires_for_build_wheelQs���'�'��w�i�'�P�P�Pr$c�0�|�|g���S)Nr�r�r�s r"rz._BuildMetaBackend.get_requires_for_build_sdistTs���'�'��b�'�I�I�Ir$�metadata_directory�suffixrkc��|�||��}t|j|��s"tjt |��|��|jS)z� PEP 517 requires that the .dist-info directory be placed in the metadata_directory. To comply, we MUST copy the directory to the root. Returns the basename of the info directory, e.g. `proj-0.0.0.dist-info`. )�_find_info_directoryr �parent�shutil�moverorF)r!r�r��info_dirs r"�_bubble_up_info_directoryz+_BuildMetaBackend._bubble_up_info_directoryWsP���,�,�-?��H�H�����*<�=�=� ;� �K��H� � �'9� :� :� :��}�r$c�L��tj|��D]s\}}}�fd�|D��}t|��dkst|��dkr9t|��dksJd��d����t||d��cS�td��d|��}t j|���)Nc�>��g|]}|�����|��Sr(rM)rErOr�s �r"rHz:_BuildMetaBackend._find_info_directory..fs*���@�@�@��Q�Z�Z��-?�-?�@�!�@�@�@r$rr z Multiple z directories foundzNo z directory found in )rA�walk�lenrr � InternalError)r!r�r�r��dirsr� candidatesr�s ` r"r�z&_BuildMetaBackend._find_info_directoryds����!�w�'9�:�:� 3� 3�O�F�D�!�@�@�@�@�T�@�@�@�J��:���!�#�#�s�4�y�y�A�~�~��:���!�+�+�+�-S��-S�-S�-S�+�+�+��F�J�q�M�2�2�2�2�2�(6�E�F�D�D�0B�D�D���"�3�'�'�'r$c�H�gtjdd��|�|���d�d�|�d�t_t��5|���ddd��n #1swxYwY|�|d��|�|d��S)Nr � dist_infoz --output-dirz--keep-egg-infoz .egg-infoz .dist-info)r�r�r�r>r�r��r!r�rjs r"rz2_BuildMetaBackend.prepare_metadata_for_build_wheelos��� � �X�b�q�b�\� � � � �� /� /� � � � �  �/�  � �  ���'� (� (� � � �N�N� � � � � � � � � � � � � � ���� � � � � �&�&�'9�;�G�G�G��-�-�.@�,�O�O�Os� A-�-A1�4A1c� �tj�|��}tj|d���d|d�}t jdi|��5}gt jdd��|�|���|�d�|�|� |���t _t��5|� ��ddd��n #1swxYwYt||��}tj� ||��}tj�|��rtj|��tjtj� ||��|��ddd��n #1swxYwY|S)NT)�exist_okz.tmp-)�prefix�dirr z --dist-dirr()rArB�abspath�makedirs�tempfile�TemporaryDirectoryr�r�r�r�r>r�rVrDrY�remove�rename) r!� setup_command�result_extension�result_directoryrj� temp_opts� tmp_dist_dir�result_basename� result_paths r"�_build_with_temp_dirz&_BuildMetaBackend._build_with_temp_dir~s ���7�?�?�+;�<�<�� � �$�t�4�4�4�4�&�/?�@�@� � � (� 5� 5�9� 5� 5� P�����"�1�"����"�"�?�3�3����� �+� � �%�%�o�6�6� �C�H�+�,�,� !� !���� � � � !� !� !� !� !� !� !� !� !� !� !���� !� !� !� !�3��.�0�0�O��'�,�,�'7��I�I�K��w�~�~�k�*�*� '�� �+�&�&�&� �I�b�g�l�l�<��A�A�;� O� O� O�# P� P� P� P� P� P� P� P� P� P� P���� P� P� P� P�&�s8� AE9�+C � E9� C �E9�C �BE9�9E=�E=c��t��5|�dgd||��cddd��S#1swxYwYdS)N� bdist_wheel�.whl)rfr�)r!�wheel_directoryrjr�s r"rz_BuildMetaBackend.build_wheel�s��� '� )� )� O� O��,�,�m�_�f�-<�o�O�O� O� O� O� O� O� O� O� O� O� O� O� O���� O� O� O� O� O� Os �5�9�9c�6�|�gd�d||��S)N)�sdistz --formats�gztarz.tar.gz)r�)r!�sdist_directoryrjs r"rz_BuildMetaBackend.build_sdist�s+���(�(�)H�)H�)H�)2�O�)8�:�:� :r$c���|sdStt|���d����}t|��dksJ�|rt |d��ndS)Nz *.dist-infor r)r,r�globr�ro)r!r��dist_info_candidatess r"�_get_dist_info_dirz$_BuildMetaBackend._get_dist_info_dir�sl��!� ��4�#�D�);�$<�$<�$A�$A�-�$P�$P�Q�Q���'�(�(�A�-�-�-�-�/C�M�s�'��*�+�+�+��Mr$c���|�|��}|rd|gng}dg|�|�|���}t��5|�|d||��cddd��S#1swxYwYdS)Nz--dist-info-dir�editable_wheelr�)r�r�rfr�)r!r�rjr�r�rs�cmds r"rz _BuildMetaBackend.build_editable�s����.�.�/A�B�B�H�4<�D�%�x�0�0�"�D�#�R�d�R�T�-@�-@��-Q�-Q�R�C�+�-�-� � ��0�0����/��� � � � � � � � � � � � ���� � � � � � s�A+�+A/�2A/c�,�|�|��Sr)rr�s r"rz1_BuildMetaBackend.get_requires_for_build_editable�s���4�4�_�E�E� Er$c�.�|�||��Sr)rr�s r"rz5_BuildMetaBackend.prepare_metadata_for_build_editable�s���8�8�"�O��� r$�r�r)NN)r%r&r'r�r�rrror�rr�rr�rrrr��LEGACY_EDITABLErrrr(r$r"r�r�6s������� � � � � � � �Q�Q�Q�Q�J�J�J�J� �C� �� �QT� � � � � (�s� (�C� (�D� (� (� (� (�:>� P� P� P� P����8<@�'+�O�O�O�O� :�:�:�:� N�X�c�]�N�x�PS�}�N�N�N�N� ��MQ� � � � � F� F� F� F�AE� � � � � � �+�r$r�c�$��eZdZdZd�fd� Z�xZS)�_BuildMetaLegacyBackendaOCompatibility backend for setuptools This is a version of setuptools.build_meta that endeavors to maintain backwards compatibility with pre-PEP 517 modes of invocation. It exists as a temporary bridge between the old packaging mechanism and the new packaging mechanism, and will eventually be removed. r�c�.��ttj��}tj�tj�|����}|tjvr tj�d|��tjd}|tjd< tt|��� |���|tjdd�<|tjd<dS#|tjdd�<|tjd<wxYw)Nrr^) r,r�rBrA�dirnamer��insertr��superr�r�)r!r_�sys_path� script_dir� sys_argv_0� __class__s �r"r�z!_BuildMetaLegacyBackend.run_setup�s�������>�>���W�_�_�R�W�_�_�\�%B�%B�C�C� � �S�X� %� %� �H�O�O�A�z� *� *� *� �X�a�[� �"���� � %� �)�� � �!� �|� �<�<�<�#�C�H�Q�Q�Q�K�$�C�H�Q�K�K�K��#�C�H�Q�Q�Q�K�$�C�H�Q�K� $� $� $� $s �')C2�2"Dr�)r%r&r'r�r�� __classcell__)r�s@r"r�r��sG������� � �%�%�%�%�%�%�%�%�%�%r$r�)=r�rZrArpr�r]r�r6r�rc�pathlibr�typingrrrrrr<r0rr �_pathr �_reqsr �_deprecation_warningr �distutils.utilr�__all__�getenvr�rr�r�� BaseExceptionrr}r*r7r>rJrVr`rfror�rhr�r��_BACKENDrrrrrrrrrr(r$r"�r sS����8 � � � � � � � � � � � � � � � ����� � � � �������������������8�8�8�8�8�8�8�8�8�8�8�8�8�8��������������������� � � � � � �>�>�>�>�>�>�$�$�$�$�$�$� %� %� %��'�R�Y�'C�R�H�H�N�N�P�P��#�'A�'I�'I�#�s�'S�'S�S��%�%�%�%�%�]�%�%�%� /�/�/�/�/�:�?�/�/�/�/�, �� 2� 2��� 2�9�9�9� � � �9�9�9� ������� �4��U�3��S� �4�+?�%@� @�A�B�� �U=�U=�U=�U=�U=�U=�U=�U=�pO�O�O�O�O�1�O�O�O�d%%�%%�%%�%%�%%�/�%%�%%�%%�R � � � ��'�D��'�D��#+�#L� ��"� ��"� ��-�&.�&N�#�*2�*V�'��,�N�%� $� &� &� � � r$