Current File : //usr/lib/python3/dist-packages/setuptools/command/__pycache__/egg_info.cpython-312.pyc
�

0A7h�i���dZddlmZddlmZddlmZddlm	Z	ddlZddlZddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZdd	lmZmZdd
lmZddlmZddlmZdd
lmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(djRe
jT�Z+d�Z,Gd�d�Z-Gd�de-e�Z.Gd�de�ZGd�de�Z/d�Z0d�Z1d�Z2d �Z3d!�Z4d"�Z5d#�Z6d$�Z7d*d%�Z8d&�Z9d+d'�Z:Gd(�d)e(�Z;y),zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contents�)�FileList)�DistutilsInternalError)�convert_path)�logN�)�metadata)�
_entry_points�_normalization)�Command)�sdist)�walk_revctrl)�edit_config)�	bdist_egg)�glob)�	packaging)�yield_lines)�SetuptoolsDeprecationWarningz{}.{}c��d}|jtjj�}t	j
tj�}d|�d�}t
|�D�]6\}}|t|�dz
k(}|dk(r|r|dz
}n|d|�d|�d	�z
}�2d
}t|�}	||	kr�||}
|
dk(r	||dzz
}n�|
dk(r||z
}n�|
d
k(r�|dz}||	kr
||dk(r|dz}||	kr
||dk(r|dz}||	kr||dk7r|dz}||	kr	||dk7r�||	k\r|t	j
|
�z
}nU||dz|}d}
|d
dk(rd}
|dd}|
t	j
|�z
}
|d
|
�d�z
}|}n|t	j
|
�z
}|dz
}||	kr��|r��2||z
}��9|dz
}t	j|tjtjz��S)z�
    Translate a file path glob like '*.txt' in to a regular expression.
    This differs from fnmatch.translate which allows wildcards to match
    directory separators. It also knows about '**/' which matches any number of
    directories.
    �z[^�]��**z.*z(?:�+z)*r�*�?�[�!�^Nz\Z)�flags)�split�os�path�sep�re�escape�	enumerate�len�compile�	MULTILINE�DOTALL)r�pat�chunksr#�
valid_char�c�chunk�
last_chunk�i�	chunk_len�char�inner_i�inner�
char_classs              �=/usr/lib/python3/dist-packages/setuptools/command/egg_info.py�translate_patternr8&s*��
�C��T�Z�Z������
$�F�
�)�)�B�F�F�
�C��!�J��f�%�>���5��#�f�+��/�)�
��D�=���t����z�3�7�7���
����J�	��)�m���8�D��s�{��z�C�'�'������z�!������a�%���Y�&�5��>�S�+@�%��k�G��Y�&�5��>�S�+@�%��k�G��	�)�e�G�n��.C�%��k�G��	�)�e�G�n��.C��i�'��2�9�9�T�?�*�C�"�!�a�%�'�2�E�!#�J��Q�x�3��%(�
� %�a�b�	���"�)�)�E�"2�2�J��Z�1�1�C� �A��r�y�y���&��
��F�A�U�)�m�Z��3�J�C�}>�@�5�L�C�
�:�:�c�����	�	�!9�:�:�c�h�eZdZdZdZed��Zd�Zd�Zde	de
fd�Zde	fd�Zde	fd	�Z
ee
�Zy)
�
InfoCommonNc�\�tj|jj��S�N)r
�	safe_name�distribution�get_name��selfs r7�namezInfoCommon.name}s"���'�'��(9�(9�(B�(B�(D�E�Er9c�~�|j|jj��}tj|�Sr=)�
_maybe_tagr?�get_versionr
�best_effort_version)rB�taggeds  r7�tagged_versionzInfoCommon.tagged_version�s0������!2�!2�!>�!>�!@�A���1�1�&�9�9r9c�^�|jr|j|�r|S||jzS)z�
        egg_info may be called more than once for a distribution,
        in which case the version string already contains all tags.
        )�vtags�_already_tagged�rB�versions  r7rEzInfoCommon._maybe_tag�s5���z�z�d�2�2�7�;�
�	
��4�:�:�%�	
r9rN�returnc�z�|j|j�xs|j|j��Sr=)�endswithrK�
_safe_tagsrMs  r7rLzInfoCommon._already_tagged�s0������
�
�+�R�w�/?�/?����@Q�/R�Rr9c�L�tjd|j���ddS)N�0r)r
rGrKrAs r7rRzInfoCommon._safe_tags�s'���1�1�A�d�j�j�\�2B�C�A�B�G�Gr9c��d}|jr||jz
}|jr|tjd�z
}|S)Nrz%Y%m%d)�	tag_build�tag_date�time�strftimerMs  r7�tagszInfoCommon.tags�s;�����>�>��t�~�~�%�G��=�=��t�}�}�X�.�.�G��r9)�__name__�
__module__�__qualname__rVrW�propertyrCrIrE�str�boolrLrRrZrK�r9r7r;r;yse���I��H�
�F��F�:�	
�S�s�S�t�S�
H�C�H�
�c��
�T�N�Er9r;c��eZdZdZgd�ZdgZddiZd�Zed��Z	e	jd��Z	d�Zd	�Ze
d
fd�Zdd�Zd
�Zd�Zd�Zd�Zy
)�egg_infoz+create a distribution's .egg-info directory))z	egg-base=�ezLdirectory containing .egg-info directories (default: top of the source tree))�tag-date�dz0Add date stamp (e.g. 20050528) to version number)z
tag-build=�bz-Specify explicit tag to add to version number)�no-date�Dz"Don't include date stamp [default]rerhc�J�d|_d|_d|_d|_d|_y)NF)�egg_base�egg_namerc�egg_version�ignore_egg_info_in_manifestrAs r7�initialize_optionszegg_info.initialize_options�s'����
���
���
����+0��(r9c��yr=rarAs r7�tag_svn_revisionzegg_info.tag_svn_revision����r9c��yr=ra)rB�values  r7rqzegg_info.tag_svn_revision�rrr9c��tj�}|j�|d<d|d<t|t	|���y)z�
        Materialize the value of date into the
        build tag. Install build keys in a deterministic order
        to avoid arbitrary reordering on subsequent builds.
        rVrrW)rcN)�collections�OrderedDictrZr�dict)rB�filenamercs   r7�save_version_infozegg_info.save_version_info�s=���*�*�,��!%�	�	����� �����H�d�H�5�6r9c�@�|j|_|j�|_tj
j
|j�}	t|tj
j�}|rdnd}tjj||j|jfz�|j�?|jj }|xsij#dt$j&�|_|j)d�t+j,|j�dz|_|jt$j&k7r9t$j0j3|j|j.�|_|j|jj4_|jj6}t9|dd�xs
t9|d	d�}|�o||jj;�k(rQ|j|_tj
j
|j�|_d|j_yyy#t$r?}tjjd|j�d|j���|�d}~wwxYw)
Nz%s==%sz%s===%sz-Invalid distribution name or version syntax: �-rrk�	.egg-info�keyrC) rCrlrIrmrrN�Version�
isinstance�requirements�Requirement�
ValueError�	distutils�errors�DistutilsOptionErrorrkr?�package_dir�getr!�curdir�ensure_dirnamer
�filename_componentrcr"�joinr�
_patched_dist�getattr�lower�_version�_parsed_version)rB�parsed_version�
is_version�specrd�dirs�pdr~s        r7�finalize_optionszegg_info.finalize_options�s��
�	�	��
��.�.�0���"�*�*�2�2�4�3C�3C�D��	�#�N�I�4E�4E�4M�4M�N�J�)�8�y�D��"�"�.�.�t�t�}�}�d�FV�FV�6W�/W�X��=�=� ��$�$�0�0�D�!�Z�R�,�,�R����;�D�M����J�'�&�9�9�$�-�-�H�;�V��
��=�=�B�I�I�%��G�G�L�L�����
�
�F�D�M�
.2�-=�-=����"�"�*��
�
�
,�
,���b�%��&�C�'�"�f�d�*C��
�>�c�T�]�]�%8�%8�%:�:��*�*�B�K�!*�!2�!2�!:�!:�4�;K�;K�!L�B��.2�D���+�;�>��5�	��"�"�7�7��=�=�$�"2�"2�4���
��	�s�A"I�	J�:J�JNc�F�t|j|j||�S)�0Compute filename of the output egg. Private API.)�
_egg_basenamerlrm)rB�
py_version�platforms   r7�_get_egg_basenamezegg_info._get_egg_basenames���T�]�]�D�,<�,<�j�(�S�Sr9c���|r|j|||�ytjj|�r.|�|st	j
d||�y|j
|�yy)a�Write `data` to `filename` or delete if empty

        If `data` is non-empty, this routine is the same as ``write_file()``.
        If `data` is empty but not ``None``, this is the same as calling
        ``delete_file(filename)`.  If `data` is ``None``, then this is a no-op
        unless `filename` exists, in which case a warning is issued about the
        orphaned file (if `force` is false), or deleted (if `force` is true).
        Nz$%s not set in setup(), but %s exists)�
write_filer!r"�existsr�warn�delete_file)rB�whatry�data�forces     r7�write_or_delete_filezegg_info.write_or_delete_file
sU����O�O�D�(�D�1�
�W�W�^�^�H�
%��|�E����?��x�P��� � ��*�&r9c���tjd||�|jd�}|js.t	|d�}|j|�|j
�yy)z�Write `data` to `filename` (if not a dry run) after announcing it

        `what` is used in a log message to identify what is being written
        to the file.
        zwriting %s to %s�utf-8�wbN)r�info�encode�dry_run�open�write�close)rBr�ryr��fs     r7r�zegg_info.write_filesO��	���#�T�8�4��{�{�7�#���|�|��X�t�$�A�
�G�G�D�M�
�G�G�I�r9c�t�tjd|�|jstj|�yy)z8Delete `filename` (if not a dry run) after announcing itzdeleting %sN)rr�r�r!�unlink)rBrys  r7r�zegg_info.delete_file)s(�������)��|�|��I�I�h��r9c	��|j|j�	tj|jd�tjd��D]X}|j�}|||jtjj|j|j���Ztjj|jd�}tjj|�r|j|�|j!�y#t$r5}d|j�d�}t
jj|�|�d}~wwxYw)Nz'Cannot update time stamp of directory '�'zegg_info.writers)�groupznative_libs.txt)�mkpathrcr!�utime�OSErrorr�r��DistutilsFileErrorr�entry_points�loadrCr"r�r�r��find_sources)rBrd�msg�ep�writer�nls      r7�runzegg_info.run/s������D�M�M�"�	B��H�H�T�]�]�D�)��'�'�.@�A�	H�B��W�W�Y�F��4����"�'�'�,�,�t�}�}�b�g�g�"F�G�	H�
�W�W�\�\�$�-�-�):�
;��
�7�7�>�>�"�����R� �������	B�;�D�M�M�?�!�L�C��"�"�5�5�c�:��A��	B�s� D�	E�"0E�Ec���tjj|jd�}t	|j
�}|j|_||_|j�|j|_
y)z"Generate SOURCES.txt manifest filezSOURCES.txtN)r!r"r�rc�manifest_makerr?rn�ignore_egg_info_dir�manifestr��filelist)rB�manifest_filename�mms   r7r�zegg_info.find_sourcesAsT���G�G�L�L����
�F��
�D�-�-�
.��!%�!A�!A���'���
��������
r9�F)r[r\r]�description�user_options�boolean_options�negative_optror^rq�setterrzr��PY_MAJORr�r�r�r�r�r�rar9r7rcrc�s���?�K�
�L�"�l�O��:��L�1��
��
����
��
�
7�*3�X,4�d�T�+�$� ��$$r9rcc�t��eZdZd�fd�	Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Z�xZS)rc�4��t�|�||�||_yr=)�super�__init__r�)rBr��debug_printr��	__class__s    �r7r�zFileList.__init__Ns���
����{�+�#6�� r9c	��|j|�\}}}}|j|j|j|jtj|j|�tj|j|�|j|jd�}dddddddd	d�}	||}|jd�}	|d
vr|g}|	r|fnd}
||}|jdj!|g|	r|gngz|z��|D]"}||�r�t#j$||g|
����$y#t$rtd
j|����wxYw)N)�include�excludezglobal-includezglobal-excludezrecursive-includezrecursive-exclude�graft�prunez%warning: no files found matching '%s'z9warning: no previously-included files found matching '%s'z>warning: no files found matching '%s' anywhere in distributionzRwarning: no previously-included files matching '%s' found anywhere in distributionz:warning: no files found matching '%s' under directory '%s'zNwarning: no previously-included files matching '%s' found under directory '%s'z+warning: no directories found matching '%s'z6no previously-included directories found matching '%s'z/this cannot happen: invalid action '{action!s}')�actionz
recursive->r�r�ra� )�_parse_template_liner�r��global_include�global_exclude�	functools�partial�recursive_include�recursive_excluder�r��KeyErrorr�format�
startswithr�r�rr�)
rB�liner��patterns�dir�dir_pattern�
action_map�log_map�process_action�action_is_recursive�extra_log_args�log_tmpl�patterns
             r7�process_template_linezFileList.process_template_lineRs���04�/H�/H��/N�,���3���|�|��|�|�"�1�1�"�1�1�!*�!2�!2��&�&��"�"+�!2�!2��&�&��"��Z�Z��Z�Z�
�
�"?�V�S�6�P�2�C�M�%
��*	�'��/�N�%�/�/��=���'�'�#�}�H�#6�#��B���6�?������H�H���%8�S�E�b�A�H�L�
�	
�
 �	=�G�!�'�*�����7�<�^�<�	=��)�	�(�A�H�H�PV�H�W��
�	�s�&D#�#%Ec���d}tt|j�dz
dd�D]H}||j|�s�|jd|j|z�|j|=d}�J|S)z�
        Remove all files from the file list that match the predicate.
        Return True if any matching files were removed
        Fr���z
 removing T)�ranger'�filesr�)rB�	predicate�foundr1s    r7�
_remove_fileszFileList._remove_files�sp��
���s�4�:�:���*�B��3�	�A�����A��'�� � ���
�
�1�
�!=�>��J�J�q�M���		�
�r9c��t|�D�cgc]$}tjj|�r�#|��&}}|j	|�t|�Scc}w)z#Include files that match 'pattern'.)rr!r"�isdir�extendr`)rBr�r�r�s    r7r�zFileList.include�sD�� ��M�B�q������q�1A��B��B����E���E�{���Cs
�$A�Ac�N�t|�}|j|j�S)z#Exclude files that match 'pattern'.)r8r��match�rBr�r�s   r7r�zFileList.exclude�s!��!�'�*���!�!�%�+�+�.�.r9c��tjj|d|�}t|d��D�cgc]$}tjj	|�r�#|��&}}|j|�t
|�Scc}w)zN
        Include all files anywhere in 'dir/' that match the pattern.
        rT)�	recursive)r!r"r�rr�r�r`)rBr�r��full_patternr�r�s      r7r�zFileList.recursive_include�s`���w�w�|�|�C��w�7�� ���>�W�q�b�g�g�m�m�TU�FV��W��W����E���E�{���Xs�$A8�A8c��ttjj|d|��}|j	|j
�S)zM
        Exclude any file anywhere in 'dir/' that match the pattern.
        r�r8r!r"r�r�r�)rBr�r�r�s    r7r�zFileList.recursive_exclude�s4��"�"�'�'�,�,�s�D�'�"B�C���!�!�%�+�+�.�.r9c���t|�D��cgc](}tjj|�D]}|���*}}}|j	|�t|�Scc}}w)zInclude all files from 'dir/'.)rr�r��findallr�r`)rBr��	match_dir�itemr�s     r7r�zFileList.graft�sh��"�#�Y�
��!�*�*�2�2�9�=�
��
�
��
��
�
	
���E���E�{���

s�-Ac��ttjj|d��}|j	|j
�S)zFilter out files from 'dir/'.rr)rBr�r�s   r7r�zFileList.prune�s0��!�"�'�'�,�,�s�D�"9�:���!�!�%�+�+�.�.r9c�$�|j�|j�ttjjd|��}|jD�cgc]}|j
|�s�|��}}|j|�t|�Scc}w)z�
        Include all files anywhere in the current directory that match the
        pattern. This is very inefficient on large file trees.
        r)	�allfilesrr8r!r"r�r�r�r`)rBr�r�r�r�s     r7r�zFileList.global_include�sl��
�=�=� ��L�L�N�!�"�'�'�,�,�t�W�"=�>�� �M�M�<�q�U�[�[��^��<��<����E���E�{���=s�B
�+B
c��ttjjd|��}|j	|j
�S)zD
        Exclude all files anywhere that match the pattern.
        rrr�s   r7r�zFileList.global_exclude�s2��"�"�'�'�,�,�t�W�"=�>���!�!�%�+�+�.�.r9c��|jd�r|dd}t|�}|j|�r|jj	|�yy)N�
r�)rQr�
_safe_pathr��append)rBrr"s   r7rzFileList.append�sF���=�=������9�D��D�!���?�?�4� ��J�J���d�#�!r9c�b�|jjt|j|��yr=)r�r��filterr)rB�pathss  r7r�zFileList.extend�s���
�
���&����%�8�9r9c�`�tt|j|j��|_y)z�
        Replace self.files with only safe paths

        Because some owners of FileList manipulate the underlying
        ``files`` attribute directly, this method must be called to
        repair those paths.
        N)�listrrr�rAs r7�_repairzFileList._repair�s���&����$�*�*�=�>��
r9c���d}tj|�}|�tjd|z�ytj|d�}|�tj||d�y	d|vxsd|v}|j
r|rytjj|�stjj|�ryy#t$r,tj||tj��YywxYw)Nz!'%s' not %s encodable -- skippingz''%s' in unexpected encoding -- skippingFr�r}s	.egg-infoT)�
unicode_utils�filesys_decoderr��
try_encoder�r!r"r��UnicodeEncodeError�sys�getfilesystemencoding)rBr"�enc_warn�u_path�	utf8_path�is_egg_infos      r7rzFileList._safe_path�s���6���-�-�d�3���>��H�H�>��E�F��"�,�,�V�W�=�	����H�H�X�t�W�-��
	B�%��/�L�<�9�3L�K��'�'�K���w�w�~�~�f�%������	�)B��*C��"�	B��H�H�X�t�S�%>�%>�%@�A�	B�s�$B=�=>B=�=2C2�1C2)NNF)r[r\r]r�r�r�r�r�r�r�r�r�r�r�rr�rr�
__classcell__)r�s@r7rrKsQ���7�E=�N��/�
�/��/�

�/�$�:�?�Br9rc�b�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	e
d��Zd	�Zd
�Z
d�Zd�Zd
�Zy)r�zMANIFEST.inc�J�d|_d|_d|_d|_d|_y)NrF)�use_defaultsr��
manifest_only�force_manifestr�rAs r7roz!manifest_maker.initialize_optionss)�������
�������#(�� r9c��yr=rarAs r7r�zmanifest_maker.finalize_optionss��r9c�&�t|j��|_tjj|j�s|j�|j�tjj|j�r|j�|j�|j�|j�|jj�|jj�|j�y)N)r�)rr�r�r!r"r�r��write_manifest�add_defaults�template�
read_template�add_license_files�_add_referenced_files�prune_file_list�sort�remove_duplicatesrAs r7r�zmanifest_maker.run!s��� �T�5M�5M�N��
��w�w�~�~�d�m�m�,����!�����
�7�7�>�>�$�-�-�(���� ���� ��"�"�$������
�
�����
�
�'�'�)����r9c�l�tj|�}|jtjd�S)N�/)rr�replacer!r#)rBr"s  r7�_manifest_normalizez"manifest_maker._manifest_normalize/s'���+�+�D�1���|�|�B�F�F�C�(�(r9c�
�|jj�|jjD�cgc]}|j|���}}d|jz}|jt|j|f|�ycc}w)zo
        Write the file list in 'self.filelist' to the manifest file
        named by 'self.manifest'.
        zwriting manifest file '%s'N)r�rr�r6r��executer�)rBr�r�r�s    r7r*zmanifest_maker.write_manifest3sk��
	
�
�
����7;�m�m�6I�6I�J���)�)�!�,�J��J�*�T�]�]�:�����Z�$�-�-��!7��=��Ks�Bc�T�|j|�stj||�yyr=)�_should_suppress_warningrr�)rBr�s  r7r�zmanifest_maker.warn?s#���,�,�S�1��J�J�t�S�!�2r9c�.�tjd|�S)z;
        suppress missing-file warnings from sdist
        zstandard file .*not found)r$r�)r�s r7r:z'manifest_maker._should_suppress_warningCs��
�x�x�4�c�:�:r9c�v�tj|�|jj|j�|jj|j
�t
t��}|r|jj|�n9tjj|j
�r|j�tjjd�r|jjd�|jd�}|jj|j�y)Nzsetup.pyrc)rr+r�rr,r�rr
r�r!r"r��
read_manifest�get_finalized_commandr�rc)rB�rcfiles�ei_cmds   r7r+zmanifest_maker.add_defaultsJs���
���4� ��
�
���T�]�]�+��
�
���T�]�]�+��|�~�&����M�M� � ��)�
�W�W�^�^�D�M�M�
*���� �
�7�7�>�>�*�%�
�M�M� � ��,��+�+�J�7���
�
���F�O�O�,r9c��|jjjxsg}|D]}tjd|��|j
j
|�y)Nzadding license file '%s')r?r�
license_filesrr�r�r�)rBrB�lfs   r7r.z manifest_maker.add_license_files\sN���)�)�2�2�@�@�F�B�
��	5�B��H�H�/��4�	5��
�
���]�+r9c��t|jdg�}|D]}tjd|��|jj|�y)zGAdd files referenced by the config (e.g. `file:` directive) to filelist�_referenced_filesz%adding file referenced by config '%s'N)r�r?r�debugr�r�)rB�
referenced�rfs   r7r/z$manifest_maker._add_referenced_filesbsI���T�.�.�0C�R�H�
��	C�B��I�I�=�r�B�	C��
�
���Z�(r9c�l�|jd�}|jj�}|jj	|j
�|jj	|�t
jtj�}|jjd|zdz|zd��y)N�buildz(^|z)(RCS|CVS|\.svn)r)�is_regex)r>r?�get_fullnamer�r��
build_baser$r%r!r#�exclude_pattern)rBrJ�base_dirr#s    r7r0zmanifest_maker.prune_file_listjs����*�*�7�3���$�$�1�1�3���
�
���E�,�,�-��
�
���H�%��i�i�������
�
�%�%��S�L�.�.��4�q�	&�	
r9c��t|d�r|j�Stjddd��|j	�S)a0
        The parent class implementation of this method
        (``sdist``) will try to include data files, which
        might cause recursion problems when
        ``include_package_data=True``.

        Therefore, avoid triggering any attempt of
        analyzing/building the manifest again.
        �get_data_files_without_manifestz@`build_py` command does not inherit from setuptools' `build_py`.z�
            Custom 'build_py' does not implement 'get_data_files_without_manifest'.
            Please extend command classes from setuptools instead of distutils.
            z!https://peps.python.org/pep-0632/)�see_url)�hasattrrQr�emit�get_data_files)rB�build_pys  r7�_safe_data_fileszmanifest_maker._safe_data_filestsJ���8�>�?��;�;�=�=�$�)�)�N�
�8�
	
��&�&�(�(r9N)r[r\r]r,ror�r�r6r*r��staticmethodr:r+r.r/r0rWrar9r7r�r�sR���H�)�
��)�
>�"��;��;�-�$,�)�
�)r9r�c��dj|�}|jd�}t|d�5}|j|�ddd�y#1swYyxYw)z{Create a file with the specified name and write 'contents' (a
    sequence of strings without line terminators) to it.
    �
r�r�N)r�r�r�r�)ry�contentsr�s   r7r�r��sO���y�y��"�H����w�'�H�	
�h��	���	��������s�A
�
Ac���tjd|�|js�|jj}|j
|jc|_}|j|jc|_}	|j|j�||c|_|_t|jdd�}tj|j|�yy#||c|_|_wxYw)Nz
writing %s�zip_safe)rr�r�r?rrmrNrlrC�write_pkg_inforcr�r�write_safety_flag)�cmd�basenameryr�oldver�oldname�safes       r7r^r^�s����H�H�\�8�$��;�;��#�#�,�,��#&�?�?�H�4D�4D� ���&�!$���x�}�}���
�w�	>�
$�H�#�#�C�L�L�1�.5�v�+�H�M�8�+��s�'�'��T�:���#�#�C�L�L�$�7���/6�v�+�H�M�8�+�s�6C�C+c��y)aj
    Unused: left to avoid errors when updating (from source) from <= 67.8.
    Old installations have a .dist-info directory with the entry-point
    ``depends.txt = setuptools.command.egg_info:warn_depends_obsolete``.
    This may trigger errors when running the first egg_info in build_meta.
    TODO: Remove this function in a version sufficiently > 68.
    Nra�r`rarys   r7�warn_depends_obsoleterg�s�r9c�t�t|xsd�}d�}t|t|��}|j|�y)Nrac��|dzS)NrZra)r�s r7�	append_crz&_write_requirements.<locals>.append_cr�s���d�{�r9)r�map�sorted�
writelines)�stream�reqs�linesrjs    r7�_write_requirementsrq�s5����
��#�E��
�	�6�%�=�)�E�
���e�r9c	�b�|j}tj�}t||j�|j
xsi}t
|�D]:}|jdjdit����t|||��<|jd||j��y)Nz
[{extra}]
r�ra)r?�io�StringIOrq�install_requires�extras_requirerlr�r��varsr��getvalue)r`rary�distr�rv�extras       r7�write_requirementsr{�s������D�
�;�;�=�D���d�3�3�4��(�(�.�B�N���'�9���
�
�)�?�)�)�3�D�F�3�4��D�.��"7�8�9����^�X�t�}�}��Gr9c��tj�}t||jj�|jd||j
��y)Nzsetup-requirements)rsrtrqr?�setup_requiresr�rx)r`raryr�s    r7�write_setup_requirementsr~�s<��
�;�;�=�D���c�.�.�=�=�>����1�8�T�]�]�_�Mr9c	��tj|jj�D�cgc]}|j	dd�d��c}�}|jd|dj
t|��dz�ycc}w)N�.rrztop-level namesrZ)rx�fromkeysr?�iter_distribution_namesr r�r�rl)r`rary�k�pkgss     r7�write_toplevel_namesr��sg���=�=�%(�%5�%5�%M�%M�%O�P������a���	�P��D��N�N�$�h��	�	�&��,�0G�$�0N�O��	Qs�A>c� �t|||d�y)NT)�	write_argrfs   r7�
overwrite_argr��s��
�c�8�X�t�,r9c���tjj|�d}t|j|d�}|�dj|�dz}|j
||||�y)NrrZ)r!r"�splitextr�r?r�r�)r`raryr��argnamerts      r7r�r��s\���g�g���x�(��+�G��C�$�$�g�t�4�E����	�	�%� �4�'�����W�h��u�=r9c��tj|jj�}tj|�}|jd||d�y)Nzentry pointsT)r	r�r?r��renderr�)r`rary�eps�defns     r7�
write_entriesr��sB��
�
�
�S�-�-�:�:�
;�C�����$�D����^�X�t�T�Br9c��tj|�}tj|�}|�d|�d|xst��}|r|d|��z
}|S)r�r|z-py)r
r�r�)rlrmr�r�rCrN�eggs       r7r�r��sV���,�,�X�6�D��/�/��<�G�
�F�!�G�9�C�
� 6�h�7�
8�C����8�*�~����Jr9c��eZdZdZy)�EggInfoDeprecationWarningz?Deprecated behavior warning for EggInfo, bypassing suppression.N)r[r\r]�__doc__rar9r7r�r��s��Ir9r�r�)NN)<r��distutils.filelistr�	_FileList�distutils.errorsr�distutils.utilrr�rr�r!r$rrsrXrv�
_importlibrrr	r
�
setuptoolsr�setuptools.command.sdistrr
�setuptools.command.setoptr�setuptools.commandr�setuptools.unicode_utilsr�setuptools.globr�setuptools.externr�setuptools.extern.jaraco.textr�warningsrr��version_infor�r8r;rcr�r�r^rgrqr{r~r�r�r�r�r�r�rar9r7�<module>r�s���<�5�3�'�����	�	�
�	���!�,��*�1�1�(�0� �'�5�3��7�>�>�3�+�+�,��P;�f)�)�Xc$�z�7�c$�LFB�y�FB�Rv)�U�v)�r
�8�&��H�N�P�-�>�C��J� <�Jr9