Ë
    0A7hþi  ã                   ó   — d Z ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(  djR                  ejT                  Ž Z+d„ Z, G d„ d«      Z- G d„ de-e«      Z. G d„ de«      Z G d„ de«      Z/d„ Z0d„ Z1d„ Z2d „ Z3d!„ Z4d"„ Z5d#„ Z6d$„ Z7d*d%„Z8d&„ Z9d+d'„Z: G d(„ 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} | j                   t        j                  j                  «      }t	        j
                  t        j                  «      }d|›d�}t        |«      D �]6  \  }}|t        |«      dz
  k(  }|dk(  r|r|dz  }n|d|›d|›d	�z  }Œ2d
}t        |«      }	||	k  rê||   }
|
dk(  r	||dz   z  }nÌ|
dk(  r||z  }nÁ|
dk(  r¤|dz   }||	k  r||   dk(  r|dz   }||	k  r||   dk(  r|dz   }||	k  r||   dk7  r|dz   }||	k  r	||   dk7  rŒ||	k\  r|t	        j
                  |
«      z  }nU||dz   | }d}|d
   dk(  rd}|dd }|t	        j
                  |«      z  }|d|›d�z  }|}n|t	        j
                  |
«      z  }|dz  }||	k  rŒê|r�Œ2||z  }�Œ9 |dz  }t	        j                  |t        j                  t        j                  z  ¬«      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   — e Zd ZdZdZed„ «       Zd„ Zd„ Zde	de
fd„Zde	fd„Zde	fd	„Z ee«      Zy)
Ú
InfoCommonNc                 ó\   — t        j                  | j                  j                  «       «      S ©N)r
   Ú	safe_nameÚdistributionÚget_name©Úselfs    r7   ÚnamezInfoCommon.name}   s"   € ä×'Ñ'¨×(9Ñ(9×(BÑ(BÓ(DÓEÐEr9   c                 ó~   — | j                  | j                  j                  «       «      }t        j                  |«      S r=   )Ú
_maybe_tagr?   Úget_versionr
   Úbest_effort_version)rB   Útaggeds     r7   Útagged_versionzInfoCommon.tagged_version�   s0   € Ø—‘ ×!2Ñ!2×!>Ñ!>Ó!@ÓAˆÜ×1Ñ1°&Ó9Ð9r9   c                 ó^   — | j                   r| j                  |«      r|S || j                   z   S )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     r7   rE   zInfoCommon._maybe_tag…   s5   € ð �zŠz˜d×2Ñ2°7Ô;ð ð	
ð ˜4Ÿ:™:Ñ%ð	
r9   rN   Úreturnc                 óz   — |j                  | j                  «      xs |j                  | j                  «       «      S r=   )ÚendswithrK   Ú
_safe_tagsrM   s     r7   rL   zInfoCommon._already_tagged�   s0   € ð ×Ñ §
¡
Ó+ÒR¨w×/?Ñ/?ÀÇÁÓ@QÓ/RÐRr9   c                 óL   — t        j                  d| j                  › �«      dd  S )NÚ0r   )r
   rG   rK   rA   s    r7   rR   zInfoCommon._safe_tags•   s'   € ô ×1Ñ1°A°d·j±j°\Ð2BÓCÀAÀBÐGÐGr9   c                 óˆ   — d}| j                   r|| j                   z  }| j                  r|t        j                  d«      z  }|S )Nr   z%Y%m%d)Ú	tag_buildÚtag_dateÚtimeÚstrftimerM   s     r7   ÚtagszInfoCommon.tagsš   s;   € ØˆØ�>Š>Ø�t—~‘~Ñ%ˆGØ�=Š=Ø”t—}‘} XÓ.Ñ.ˆGØˆr9   )Ú__name__Ú
__module__Ú__qualname__rV   rW   ÚpropertyrC   rI   rE   ÚstrÚboolrL   rR   rZ   rK   © r9   r7   r;   r;   y   se   „ Ø€IØ€HàñFó ðFò:ò	
ðS sð S¨tó Sð
H˜Có Hð
�có ñ �T‹N�Er9   r;   c                   ó˜   — e Zd ZdZg d¢ZdgZddiZd„ Zed„ «       Z	e	j                  d„ «       Z	d„ Zd	„ Zed
fd„Zdd„Zd„ Zd„ Zd„ Zd„ Zy
)Ú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]re   rh   c                 óJ   — d | _         d | _        d | _        d | _        d| _        y )NF)Úegg_baseÚegg_namerc   Úegg_versionÚignore_egg_info_in_manifestrA   s    r7   Úinitialize_optionszegg_info.initialize_options¹   s'   € ØˆŒØˆŒØˆŒØˆÔØ+0ˆÕ(r9   c                  ó   — y r=   ra   rA   s    r7   Útag_svn_revisionzegg_info.tag_svn_revisionÃ   ó   € àr9   c                  ó   — y r=   ra   )rB   Úvalues     r7   rq   zegg_info.tag_svn_revisionÇ   rr   r9   c                 óˆ   — t        j                  «       }| 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.
        rV   r   rW   )rc   N)ÚcollectionsÚOrderedDictrZ   r   Údict)rB   Úfilenamerc   s      r7   Úsave_version_infozegg_info.save_version_infoÍ   s=   € ô ×*Ñ*Ó,ˆð !%§	¡	£ˆ�ÑØ ˆ�ÑÜ�Hœd¨HÔ5Õ6r9   c                 ó@  — | j                   | _        | j                  «       | _        t        j
                  j                  | j                  «      }	 t        |t        j
                  j                  «      }|rdnd}t        j                  j                  || j                  | j                  fz  «       | j                  €?| j                  j                   }|xs i j#                  dt$        j&                  «      | _        | j)                  d«       t+        j,                  | j                  «      dz   | _        | j                  t$        j&                  k7  r9t$        j0                  j3                  | j                  | j.                  «      | _        | j                  | j                  j4                  _        | j                  j6                  }t9        |dd «      xs t9        |d	d «      }|�o|| j                  j;                  «       k(  rQ| j                  |_        t        j
                  j                  | j                  «      |_        d | j                  _        y y y # t        $ r?}t        j                  j                  d| j                  ›d| j                  ›�«      |‚d }~ww xY w)
Nz%s==%sz%s===%sz-Invalid distribution name or version syntax: ú-r   rk   ú	.egg-infoÚkeyrC   ) rC   rl   rI   rm   r   rN   ÚVersionÚ
isinstanceÚrequirementsÚRequirementÚ
ValueErrorÚ	distutilsÚerrorsÚDistutilsOptionErrorrk   r?   Úpackage_dirÚgetr!   ÚcurdirÚensure_dirnamer
   Úfilename_componentrc   r"   Újoinr   Ú_patched_distÚgetattrÚlowerÚ_versionÚ_parsed_version)rB   Úparsed_versionÚ
is_versionÚspecrd   ÚdirsÚpdr~   s           r7   Úfinalize_optionszegg_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ÊJNc                 óF   — t        | j                  | j                  ||«      S )ú0Compute filename of the output egg. Private API.)Ú_egg_basenamerl   rm   )rB   Ú
py_versionÚplatforms      r7   Ú_get_egg_basenamezegg_info._get_egg_basename  s   € ä˜TŸ]™]¨D×,<Ñ,<¸jÈ(ÓSÐSr9   c                 óÊ   — |r| j                  |||«       yt        j                  j                  |«      r.|€|st	        j
                  d||«       y| j                  |«       yy)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_filezegg_info.write_or_delete_file
  sU   € ñ Ø�O‰O˜D (¨DÕ1Ü�W‰W�^‰^˜HÔ%Øˆ|¡EÜ—‘Ð?ÀÀxÔPØà× Ñ  Õ*ð &r9   c                 óÈ   — t        j                  d||«       |j                  d«      }| j                  s.t	        |d«      }|j                  |«       |j                  «        yy)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.
        zwriting %s to %súutf-8ÚwbN)r   ÚinfoÚencodeÚdry_runÚopenÚwriteÚclose)rB   r£   ry   r¤   Úfs        r7   rŸ   zegg_info.write_file  sO   € ô 	�‰Ð# T¨8Ô4Ø�{‰{˜7Ó#ˆØ�|Š|Ü�X˜tÓ$ˆAØ�G‰G�DŒMØ�G‰G�Ið r9   c                 ót   — t        j                  d|«       | j                  st        j                  |«       yy)z8Delete `filename` (if not a dry run) after announcing itzdeleting %sN)r   rª   r¬   r!   Úunlink)rB   ry   s     r7   r¢   zegg_info.delete_file)  s(   € ä�‰� Ô)Ø�|Š|Ü�I‰I�hÕð r9   c           	      ó´  — | j                  | j                  «       	 t        j                  | j                  d «       t        j                  d¬«      D ]X  }|j                  «       } || |j                  t        j                  j                  | j                  |j                  «      «       ŒZ t        j                  j                  | j                  d«      }t        j                  j                  |«      r| j                  |«       | j!                  «        y # t        $ r5}d| j                  › d�}t
        j                  j                  |«      |‚d }~ww xY w)Nz'Cannot update time stamp of directory 'ú'zegg_info.writers)Úgroupznative_libs.txt)Úmkpathrc   r!   ÚutimeÚOSErrorr„   r…   ÚDistutilsFileErrorr   Úentry_pointsÚloadrC   r"   rŒ   r    r¢   Úfind_sources)rB   rd   Ú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ÅEc                 óô   — t         j                  j                  | j                  d«      }t	        | j
                  «      }| j                  |_        ||_        |j                  «        |j                  | _
        y)z"Generate SOURCES.txt manifest filezSOURCES.txtN)r!   r"   rŒ   rc   Úmanifest_makerr?   rn   Úignore_egg_info_dirÚmanifestrÁ   Úfilelist)rB   Úmanifest_filenameÚmms      r7   r¼   zegg_info.find_sourcesA  sT   € äŸG™GŸL™L¨¯©¸ÓFÐÜ˜D×-Ñ-Ó.ˆØ!%×!AÑ!AˆÔØ'ˆŒØ
�‰ŒØŸ™ˆ�r9   ©F)r[   r\   r]   ÚdescriptionÚuser_optionsÚboolean_optionsÚnegative_optro   r^   rq   Úsetterrz   r—   ÚPY_MAJORr�   r¦   rŸ   r¢   rÁ   r¼   ra   r9   r7   rc   rc   ¥   s‡   „ Ø?€Kò
€Lð "�l€Oà�:ð€Lò1ð ñó ðð ×Ññó ðò
7ò*3ðX ,4¸dó Tó+ò$ò òó$$r9   rc   c                   ót   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r   c                 ó4   •— t         ‰| �  ||«       || _        y r=   )ÚsuperÚ__init__rÄ   )rB   r¡   Údebug_printrÄ   Ú	__class__s       €r7   rÓ   zFileList.__init__N  s   ø€ Ü‰Ñ˜˜{Ô+Ø#6ˆÕ r9   c           	      ó–  — | j                  |«      \  }}}}| j                  | j                  | j                  | j                  t        j                  | j                  |«      t        j                  | j                  |«      | j                  | j                  dœ}dddddddd	dœ}	 ||   }|j                  d«      }	|dv r|g}|	r|fnd}
||   }| j                  dj!                  |g|	r|gng z   |z   «      «       |D ]"  } ||«      rŒt#        j$                  ||g|
¢­Ž  Œ$ y # t        $ r t        d
j                  |¬«      «      ‚w xY w)N)ÚincludeÚexcludezglobal-includezglobal-excludezrecursive-includezrecursive-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Œ   r   r¡   )rB   ÚlinerÛ   ÚpatternsÚdirÚdir_patternÚ
action_mapÚlog_mapÚprocess_actionÚaction_is_recursiveÚextra_log_argsÚlog_tmplÚpatterns                r7   Úprocess_template_linezFileList.process_template_lineR  s‰  € ð 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# Ä#%Ec                 óæ   — d}t        t        | j                  «      dz
  dd«      D ]H  } || j                  |   «      sŒ| j                  d| 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Úfoundr1   s       r7   Ú_remove_fileszFileList._remove_files™  sp   € ð
 ˆÜ”s˜4Ÿ:™:“¨Ñ*¨B°Ó3ò 	ˆAÙ˜Ÿ™ A™Õ'Ø× Ñ  °·
±
¸1±Ñ!=Ô>Ø—J‘J˜q�MØ‘ð		ð
 ˆr9   c                 ó´   — t        |«      D �cg c]$  }t        j                  j                  |«      rŒ#|‘Œ& }}| j	                  |«       t        |«      S c c}w )z#Include files that match 'pattern'.)r   r!   r"   ÚisdirÚextendr`   )rB   rñ   r°   rø   s       r7   r×   zFileList.include¦  sD   € ä  ›MÖB�q´·±·±¸qÕ1A’ÐBˆÐBØ�‰�EÔÜ�E‹{Ðùò Cs
   Ž$A³Ac                 óN   — t        |«      }| j                  |j                  «      S )z#Exclude files that match 'pattern'.)r8   rù   Úmatch©rB   rñ   rþ   s      r7   rØ   zFileList.exclude¬  s!   € ä! 'Ó*ˆØ×!Ñ! %§+¡+Ó.Ð.r9   c                 óú   — t         j                  j                  |d|«      }t        |d¬«      D �cg c]$  }t         j                  j	                  |«      rŒ#|‘Œ& }}| j                  |«       t        |«      S c c}w )zN
        Include all files anywhere in 'dir/' that match the pattern.
        r   T)Ú	recursive)r!   r"   rŒ   r   rû   rü   r`   )rB   ré   rñ   Úfull_patternr°   rø   s         r7   râ   zFileList.recursive_include±  s`   € ô —w‘w—|‘| C¨¨wÓ7ˆÜ  ¸Ô>ÖW�qÄbÇgÁgÇmÁmÐTUÕFV’ÐWˆÐWØ�‰�EÔÜ�E‹{Ðùò Xs   ±$A8ÁA8c                 óŒ   — t        t        j                  j                  |d|«      «      }| j	                  |j
                  «      S )zM
        Exclude any file anywhere in 'dir/' that match the pattern.
        r   ©r8   r!   r"   rŒ   rù   rþ   )rB   ré   rñ   rþ   s       r7   rã   zFileList.recursive_excludeº  s4   € ô "¤"§'¡'§,¡,¨s°D¸'Ó"BÓCˆØ×!Ñ! %§+¡+Ó.Ð.r9   c                 óÂ   — t        |«      D ��cg c](  }t        j                  j                  |«      D ]  }|‘Œ Œ* }}}| j	                  |«       t        |«      S c c}}w )zInclude all files from 'dir/'.)r   r„   rÆ   Úfindallrü   r`   )rB   ré   Ú	match_dirÚitemrø   s        r7   rÙ   zFileList.graftÁ  sh   € ô " #›Y÷
àÜ!×*Ñ*×2Ñ2°9Ó=ò
ð ò ð
Øð
ˆñ 
ð
 	�‰�EÔÜ�E‹{Ðùó
s   �-Ac                 óŠ   — t        t        j                  j                  |d«      «      }| j	                  |j
                  «      S )zFilter out files from 'dir/'.r   r  )rB   ré   rþ   s      r7   rÚ   zFileList.pruneË  s0   € ä!¤"§'¡'§,¡,¨s°DÓ"9Ó:ˆØ×!Ñ! %§+¡+Ó.Ð.r9   c                 ó$  — | j                   €| j                  «        t        t        j                  j                  d|«      «      }| j                   D �cg c]  }|j                  |«      sŒ|‘Œ }}| j                  |«       t        |«      S c c}w )z“
        Include all files anywhere in the current directory that match the
        pattern. This is very inefficient on large file trees.
        r   )	Úallfilesr  r8   r!   r"   rŒ   rþ   rü   r`   )rB   rñ   rþ   r°   rø   s        r7   rÞ   zFileList.global_includeÐ  sl   € ð
 �=‰=Ð Ø�L‰LŒNÜ!¤"§'¡'§,¡,¨t°WÓ"=Ó>ˆØ ŸM™MÖ<�q¨U¯[©[¸­^’Ð<ˆÐ<Ø�‰�EÔÜ�E‹{Ðùò =s   ÁBÁ+Bc                 óŠ   — t        t        j                  j                  d|«      «      }| j	                  |j
                  «      S )zD
        Exclude all files anywhere that match the pattern.
        r   r  rÿ   s      r7   rß   zFileList.global_excludeÜ  s2   € ô "¤"§'¡'§,¡,¨t°WÓ"=Ó>ˆØ×!Ñ! %§+¡+Ó.Ð.r9   c                 ó    — |j                  d«      r|d d }t        |«      }| j                  |«      r| j                  j	                  |«       y y )Núrô   )rQ   r   Ú
_safe_pathrö   Úappend)rB   r  r"   s      r7   r  zFileList.appendã  sF   € Ø�=‰=˜ÔØ˜˜�9ˆDÜ˜DÓ!ˆà�?‰?˜4Ô Ø�J‰J×Ñ˜dÕ#ð !r9   c                 ób   — | j                   j                  t        | j                  |«      «       y r=   )rö   rü   Úfilterr  )rB   Úpathss     r7   rü   zFileList.extendë  s   € Ø�
‰
×Ñœ& §¡°%Ó8Õ9r9   c                 ó`   — t        t        | 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)Úlistr  r  rö   rA   s    r7   Ú_repairzFileList._repairî  s   € ô œ& §¡°$·*±*Ó=Ó>ˆ�
r9   c                 óê  — d}t        j                  |«      }|€t        j                  d|z  «       yt        j                  |d«      }|€t        j                  ||d«       y	 d|v xs d|v }| j
                  r|ryt        j                  j                  |«      st        j                  j                  |«      ryy # t        $ r, t        j                  ||t        j                  «       «       Y y w xY w)Nz!'%s' not %s encodable -- skippingz''%s' in unexpected encoding -- skippingFr¨   r}   s	   .egg-infoT)Úunicode_utilsÚfilesys_decoder   r¡   Ú
try_encoderÄ   r!   r"   r    ÚUnicodeEncodeErrorÚsysÚgetfilesystemencoding)rB   r"   Úenc_warnÚu_pathÚ	utf8_pathÚis_egg_infos         r7   r  zFileList._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Ã1C2)NNF)r[   r\   r]   rÓ   rò   rù   r×   rØ   râ   rã   rÙ   rÚ   rÞ   rß   r  rü   r  r  Ú__classcell__)rÕ   s   @r7   r   r   K  sQ   ø„ õ7òE=òNòò/ò
ò/òò/ò

ò/ò$ò:ò?öBr9   r   c                   ób   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
d„ «       Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)rÃ   zMANIFEST.inc                 óJ   — d| _         d| _        d| _        d| _        d| _        y )Nr   F)Úuse_defaultsrÚ   Úmanifest_onlyÚforce_manifestrÄ   rA   s    r7   ro   z!manifest_maker.initialize_options  s)   € ØˆÔØˆŒ
ØˆÔØˆÔØ#(ˆÕ r9   c                  ó   — y r=   ra   rA   s    r7   r—   zmanifest_maker.finalize_options  s   € Ør9   c                 ó&  — t        | j                  ¬«      | _        t        j                  j                  | j                  «      s| j                  «        | j                  «        t        j                  j                  | j                  «      r| j                  «        | j                  «        | j                  «        | j                  «        | j                  j                  «        | j                  j                  «        | j                  «        y )N)rÄ   )r   rÄ   rÆ   r!   r"   r    rÅ   Úwrite_manifestÚadd_defaultsÚtemplateÚread_templateÚadd_license_filesÚ_add_referenced_filesÚprune_file_listÚsortÚremove_duplicatesrA   s    r7   rÁ   zmanifest_maker.run!  s°   € Ü °T×5MÑ5MÔNˆŒÜ�w‰w�~‰~˜dŸm™mÔ,Ø×ÑÔ!Ø×ÑÔÜ�7‰7�>‰>˜$Ÿ-™-Ô(Ø×ÑÔ Ø×ÑÔ Ø×"Ñ"Ô$Ø×ÑÔØ�‰×ÑÔØ�‰×'Ñ'Ô)Ø×ÑÕr9   c                 ól   — t        j                  |«      }|j                  t        j                  d«      S )Nú/)r  r  Úreplacer!   r#   )rB   r"   s     r7   Ú_manifest_normalizez"manifest_maker._manifest_normalize/  s'   € Ü×+Ñ+¨DÓ1ˆØ�|‰|œBŸF™F CÓ(Ð(r9   c                 ó
  — | j                   j                  «        | j                   j                  D �cg c]  }| j                  |«      ‘Œ }}d| j                  z  }| j                  t        | j                  |f|«       yc c}w )zo
        Write the file list in 'self.filelist' to the manifest file
        named by 'self.manifest'.
        zwriting manifest file '%s'N)rÆ   r  rö   r6  rÅ   ÚexecuterŸ   )rB   r°   rö   r½   s       r7   r*  zmanifest_maker.write_manifest3  sk   € ð
 	�‰×ÑÔð 7;·m±m×6IÑ6IÖJ°�×)Ñ)¨!Õ,ÐJˆÐJØ*¨T¯]©]Ñ:ˆØ�‰”Z $§-¡-°Ð!7¸Õ=ùò Ks   ³B c                 óT   — | j                  |«      st        j                  | |«       y y r=   )Ú_should_suppress_warningr   r¡   )rB   r½   s     r7   r¡   zmanifest_maker.warn?  s#   € Ø×,Ñ,¨SÔ1Ü�J‰J�t˜SÕ!ð 2r9   c                 ó.   — t        j                  d| «      S )z;
        suppress missing-file warnings from sdist
        zstandard file .*not found)r$   rþ   )r½   s    r7   r:  z'manifest_maker._should_suppress_warningC  s   € ô
 �x‰xÐ4°cÓ:Ð:r9   c                 óv  — t        j                  | «       | j                  j                  | j                  «       | j                  j                  | j
                  «       t        t        «       «      }|r| j                  j                  |«       n9t        j                  j                  | j
                  «      r| j                  «        t        j                  j                  d«      r| j                  j                  d«       | j                  d«      }| j                  j                  |j                  «       y )Nzsetup.pyrc   )r   r+  rÆ   r  r,  rÅ   r  r   rü   r!   r"   r    Úread_manifestÚget_finalized_commandrÙ   rc   )rB   ÚrcfilesÚei_cmds      r7   r+  zmanifest_maker.add_defaultsJ  sÇ   € Ü×Ñ˜4Ô Ø�‰×Ñ˜TŸ]™]Ô+Ø�‰×Ñ˜TŸ]™]Ô+Ü”|“~Ó&ˆÙØ�M‰M× Ñ  Õ)Ü�W‰W�^‰^˜DŸM™MÔ*Ø×ÑÔ ä�7‰7�>‰>˜*Ô%ð �M‰M× Ñ  Ô,à×+Ñ+¨JÓ7ˆØ�‰×Ñ˜FŸO™OÕ,r9   c                 ó¼   — | j                   j                  j                  xs g }|D ]  }t        j                  d|«       Œ | j
                  j                  |«       y )Nzadding license file '%s')r?   r   Úlicense_filesr   rª   rÆ   rü   )rB   rB  Úlfs      r7   r.  z manifest_maker.add_license_files\  sN   € Ø×)Ñ)×2Ñ2×@Ñ@ÒFÀBˆØò 	5ˆBÜ�H‰HÐ/°Õ4ð	5à�‰×Ñ˜]Õ+r9   c                 ó¢   — t        | j                  dg «      }|D ]  }t        j                  d|«       Œ | j                  j                  |«       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      r7   r/  z$manifest_maker._add_referenced_filesb  sI   € ä˜T×.Ñ.Ð0CÀRÓHˆ
àò 	CˆBÜ�I‰IÐ=¸rÕBð	Cà�‰×Ñ˜ZÕ(r9   c                 ól  — | j                  d«      }| j                  j                  «       }| j                  j	                  |j
                  «       | j                  j	                  |«       t        j                  t        j                  «      }| j                  j                  d|z   dz   |z   d¬«       y )NÚbuildz(^|z)(RCS|CVS|\.svn)r   )Úis_regex)r>  r?   Úget_fullnamerÆ   rÚ   Ú
build_baser$   r%   r!   r#   Úexclude_pattern)rB   rJ  Úbase_dirr#   s       r7   r0  zmanifest_maker.prune_file_listj  s�   € Ø×*Ñ*¨7Ó3ˆØ×$Ñ$×1Ñ1Ó3ˆØ�‰×Ñ˜E×,Ñ,Ô-Ø�‰×Ñ˜HÔ%Ü�i‰iœŸ™ÓˆØ�‰×%Ñ%Ø�S‰LÐ.Ñ.°Ñ4¸qð 	&õ 	
r9   c                 óŠ   — t        |d«      r|j                  «       S t        j                  ddd¬«       |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)ÚhasattrrQ  r   ÚemitÚget_data_files)rB   Úbuild_pys     r7   Ú_safe_data_fileszmanifest_maker._safe_data_filest  sJ   € ô �8Ð>Ô?Ø×;Ñ;Ó=Ð=ä$×)Ñ)ØNðð 8õ	
ð ×&Ñ&Ó(Ð(r9   N)r[   r\   r]   r,  ro   r—   rÁ   r6  r*  r¡   Ústaticmethodr:  r+  r.  r/  r0  rW  ra   r9   r7   rÃ   rÃ     sR   „ Ø€Hò)òòò)ò
>ò"ð ñ;ó ð;ò-ò$,ò)ò
ó)r9   rÃ   c                 ó¬   — dj                  |«      }|j                  d«      }t        | d«      5 }|j                  |«       ddd«       y# 1 sw Y   yxY w)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      r7   rŸ   rŸ   �  sO   € ð �y‰y˜Ó"€Hð �‰˜wÓ'€Hä	ˆh˜Ó	ð  Ø	�‰�Ô÷÷ ñ ús   ¯A
Á
Ac                 óÜ  — t        j                  d|«       | j                  s¶| j                  j                  }| j
                  |j                  c|_        }| j                  |j                  c|_        }	  |j                  | j                  «       ||c|_        |_        t        | j                  dd «      }t        j                  | j                  |«       y y # ||c|_        |_        w xY w)Nz
writing %sÚzip_safe)r   rª   r¬   r?   r   rm   rN   rl   rC   Úwrite_pkg_inforc   rŽ   r   Úwrite_safety_flag)ÚcmdÚbasenamery   r   ÚoldverÚoldnameÚsafes          r7   r^  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   Á6C Ã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`  ra  ry   s      r7   Úwarn_depends_obsoleterg  ­  s   � r9   c                 ót   — t        |xs d«      }d„ }t        |t        |«      «      }| j                  |«       y )Nra   c                 ó   — | dz   S )NrZ  ra   )rç   s    r7   Ú	append_crz&_write_requirements.<locals>.append_crº  s   € Ø�d‰{Ðr9   )r   ÚmapÚsortedÚ
writelines)ÚstreamÚreqsÚlinesrj  s       r7   Ú_write_requirementsrq  ·  s5   € Ü˜š
 Ó#€Eòô �	œ6 %›=Ó)€EØ
×Ñ�eÕr9   c           	      ób  — | j                   }t        j                  «       }t        ||j                  «       |j
                  xs i }t        |«      D ]:  }|j                   dj                  di t        «       ¤Ž«       t        |||   «       Œ< | j                  d||j                  «       «       y )Nz
[{extra}]
r�   ra   )r?   ÚioÚStringIOrq  Úinstall_requiresÚextras_requirerl  r®   rå   Úvarsr¦   Úgetvalue)r`  ra  ry   Ú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·}±}³ÕGr9   c                 ó®   — t        j                  «       }t        || j                  j                  «       | j                  d||j                  «       «       y )Nzsetup-requirements)rs  rt  rq  r?   Úsetup_requiresr¦   rx  )r`  ra  ry   r¤   s       r7   Úwrite_setup_requirementsr~  Ì  s<   € Ü�;‰;‹=€DÜ˜˜c×.Ñ.×=Ñ=Ô>Ø×ÑÐ1°8¸T¿]¹]»_ÕMr9   c           	      ó  — t         j                  | j                  j                  «       D �cg c]  }|j	                  dd«      d   ‘Œ c}«      }| j                  d|dj                  t        |«      «      dz   «       y c c}w )Nú.r   r   ztop-level namesrZ  )rx   Úfromkeysr?   Úiter_distribution_namesr    rŸ   rŒ   rl  )r`  ra  ry   ÚkÚpkgss        r7   Úwrite_toplevel_namesr…  Ò  sg   € Ü�=‰=Ø%(×%5Ñ%5×%MÑ%MÓ%OÖP ˆ�‰��a‹˜Ó	ÒPó€Dð ‡N�NÐ$ h°·	±	¼&À»,Ó0GÈ$Ñ0NÕOùò 	Qs   ¬A>c                 ó    — t        | ||d«       y )NT)Ú	write_argrf  s      r7   Úoverwrite_argrˆ  Ù  s   € Üˆc�8˜X tÕ,r9   c                 óÊ   — t         j                  j                  |«      d   }t        | j                  |d «      }|�dj                  |«      dz   }| j                  ||||«       y )Nr   rZ  )r!   r"   ÚsplitextrŽ   r?   rŒ   r¦   )r`  ra  ry   r¥   Úargnamert   s         r7   r‡  r‡  Ý  s\   € Ü�g‰g×Ñ˜xÓ(¨Ñ+€GÜ�C×$Ñ$ g¨tÓ4€EØÐØ—	‘	˜%Ó  4Ñ'ˆØ×Ñ˜W h°°uÕ=r9   c                 ó¨   — t        j                  | j                  j                  «      }t        j                  |«      }| j                  d||d«       y )Nzentry pointsT)r	   r»   r?   rº   Úrenderr¦   )r`  ra  ry   ÚepsÚdefns        r7   Úwrite_entriesr�  å  sB   € Ü
×
Ñ
˜S×-Ñ-×:Ñ:Ó
;€CÜ×Ñ Ó$€DØ×Ñ˜^¨X°t¸TÕBr9   c                 ó’   — t        j                  | «      }t        j                  |«      }|› d|› d|xs t        › �}|r|d|› �z  }|S )r™   r|   z-py)r
   r‹   rÏ   )rl   rm   r›   rœ   rC   rN   Úeggs          r7   rš   rš   ë  sV   € ä×,Ñ,¨XÓ6€DÜ×/Ñ/°Ó<€GØˆF�!�G�9˜C 
Ò 6¬hÐ7Ð
8€CÙØ��8�*ˆ~ÑˆØ€Jr9   c                   ó   — e Zd ZdZy)ÚEggInfoDeprecationWarningz?Deprecated behavior warning for EggInfo, bypassing suppression.N)r[   r\   r]   Ú__doc__ra   r9   r7   r”  r”  õ  s   „ ÚIr9   r”  rÉ   )NN)<r•  Údistutils.filelistr   Ú	_FileListÚdistutils.errorsr   Údistutils.utilr   r„   r   rà   r!   r$   r  rs  rX   rv   Ú
_importlibr   r   r	   r
   Ú
setuptoolsr   Úsetuptools.command.sdistr   r   Úsetuptools.command.setoptr   Úsetuptools.commandr   Úsetuptools.unicode_utilsr  Úsetuptools.globr   Úsetuptools.externr   Úsetuptools.extern.jaraco.textr   Úwarningsr   rå   Úversion_inforÏ   r8   r;   rc   rÃ   rŸ   r^  rg  rq  r{  r~  r…  rˆ  r‡  r�  rš   r”  ra   r9   r7   ú<module>r¥     sü   ðñ<õ 5Ý 3Ý 'Ý Û Û Û Û 	Û 	Û 
Û 	Û Û å !ß ,å Ý *Ý 1Ý 1Ý (Ý 0Ý  å 'Ý 5Ý 3ð ˆ7�>‰>˜3×+Ñ+Ð,€òP;÷f)ñ )ôXc$ˆz˜7ô c$ôLFBˆyô FBôRv)�Uô v)òr
ò8ò&òòHòNòPò-ó>òCóôJÐ <õ Jr9   