+
    êhé;  ã                  óà   € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
Ht ^RIHt ^RIHtHt ^RIHt  ! R R	4      tR
 t ! R R]4      t]P.                  3R R lltR tRR ltR# )zsdistutils.filelist

Provides the FileList class, used for poking about the filesystem
and building lists of files.
)ÚannotationsN)ÚIterable)ÚLiteralÚoverload)Úlog)ÚDistutilsInternalErrorÚDistutilsTemplateError)Úconvert_pathc                  ó^  € ] tR t^tRtR'R R lltR R lt]P                  3R R llt	R	 R
 lt
R R ltR R ltR R ltR R ltR tR R lt]R(R R ll4       t]R)R R ll4       t]R R l4       tR(R R llt]R(R R ll4       t]R)R  R! ll4       t]R" R# l4       tR(R$ R% lltR&tR# )*ÚFileLista¥  A list of files built by on exploring the filesystem and filtered by
applying various patterns to what we find there.

Instance attributes:
  dir
    directory from which files will be taken -- only used if
    'allfiles' not supplied to constructor
  files
    list of filenames currently being built/filtered/manipulated
  allfiles
    complete list of files under consideration (ie. without any
    filtering applied)
Nc               ó$   € V ^8„  d   QhRRRRRR/# )é   ÚwarnÚobjectÚdebug_printÚreturnÚNone© )Úformats   "Ú@/usr/lib/python3/dist-packages/setuptools/_distutils/filelist.pyÚ__annotate__ÚFileList.__annotate__$   s!   € ÷ #ñ #˜Vð #¸ð #È4ñ #ó    c                	ó"   € R V n         . V n        R # ©N©ÚallfilesÚfiles)Úselfr   r   s   &&&r   Ú__init__ÚFileList.__init__$   s   € ð /3ˆŒØ "ˆŽ
r   c               ó    € V ^8„  d   QhRRRR/# )r   r   úIterable[str]r   r   r   )r   s   "r   r   r   *   s   € ÷ !ñ ! ]ð !°tñ !r   c                	ó   € Wn         R # r   )r   )r   r   s   &&r   Úset_allfilesÚFileList.set_allfiles*   s   € Ø Žr   c               ó    € V ^8„  d   QhRRRR/# )r   Údirústr | os.PathLike[str]r   r   r   )r   s   "r   r   r   -   s   € ÷ %ñ %Ð1ð %À$ñ %r   c                	ó&   € \        V4      V n        R # r   )Úfindallr   )r   r'   s   &&r   r*   ÚFileList.findall-   s   € Ü ›ˆŽr   c               ó    € V ^8„  d   QhRRRR/# )r   Úmsgr   r   r   r   )r   s   "r   r   r   0   s   € ÷ ñ ˜vð ¨$ñ r   c                ó<   € ^ RI Hp V'       d   \        V4       R# R# )znPrint 'msg' to stdout if the global DEBUG (taken from the
DISTUTILS_DEBUG environment variable) flag is true.
)ÚDEBUGN)Údistutils.debugr/   Úprint)r   r-   r/   s   && r   r   ÚFileList.debug_print0   s   € õ 	*çÜ�#ŽJñ r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚitemÚstrr   r   r   )r   s   "r   r   r   ;   s   € ÷  ñ  ˜3ð   4ñ  r   c                	ó<   € V P                   P                  V4       R # r   )r   Úappend)r   r4   s   &&r   r7   ÚFileList.append;   s   € Ø�
‰
×Ñ˜$Ör   c               ó    € V ^8„  d   QhRRRR/# )r   Úitemsr"   r   r   r   )r   s   "r   r   r   >   s   € ÷ !ñ !˜Mð !¨dñ !r   c                	ó<   € V P                   P                  V4       R # r   )r   Úextend)r   r:   s   &&r   r<   ÚFileList.extend>   s   € Ø�
‰
×Ñ˜%Ö r   c               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r   r   A   s   € ÷ 9ñ 9�dñ 9r   c                	ó  € \        \        \        P                  P                  V P
                  4      4      p. V n        V F:  pV P
                  P                  \        P                  P                  ! V!  4       K<  	  R # r   )ÚsortedÚmapÚosÚpathÚsplitr   r7   Újoin)r   Úsortable_filesÚ
sort_tuples   &  r   ÚsortÚFileList.sortA   sO   € ä¤¤B§G¡G§M¡M°4·:±:Ó >Ó?ˆØˆŒ
Û(ˆJØ�J‰J×ÑœbŸg™gŸlšl¨JÑ7Ö8ó )r   c               ó   € V ^8„  d   QhRR/# r?   r   )r   s   "r   r   r   J   s   € ÷ "ñ " 4ñ "r   c                	óà   € \        \        V P                  4      ^,
          ^ R4       FB  pV P                  V,          V P                  V^,
          ,          8X  g   K5  V P                  V KD  	  R# )é   Néÿÿÿÿ)ÚrangeÚlenr   )r   Úis   & r   Úremove_duplicatesÚFileList.remove_duplicatesJ   sJ   € ä”s˜4Ÿ:™:“¨Õ*¨A¨rÖ2ˆAØ�z‰z˜!�} §
¡
¨1¨q­5Õ 1Ö1Ø—J‘J˜q’Mó 3r   c                	ó.  € VP                  4       pV^ ,          pR;p;rVVR	9   dB   \        V4      ^8  d   \        RV R24      hVR,           Uu. uF  p\        V4      NK  	  ppM¢VR
9   dT   \        V4      ^8  d   \        RV R24      h\        V^,          4      pVR,           Uu. uF  p\        V4      NK  	  ppMHVR9   d3   \        V4      ^8w  d   \        RV R24      h\        V^,          4      pM\        RV R24      hW4WV3# u upi u upi )é    NÚ'z#' expects <pattern1> <pattern2> ...:rM   NNz)' expects <dir> <pattern1> <pattern2> ...:r   NNz ' expects a single <dir_pattern>zunknown action ')ÚincludeÚexcludeúglobal-includeúglobal-exclude)úrecursive-includeúrecursive-exclude)ÚgraftÚprune)rE   rP   r   r	   )r   ÚlineÚwordsÚactionÚpatternsr'   Údir_patternÚws   &&      r   Ú_parse_template_lineÚFileList._parse_template_lineR   s5  € Ø—
‘
“ˆØ�q•ˆà'+Ð+ˆÐ+�3àÐOÔOÜ�5‹z˜AŒ~Ü,Ø˜�xÐBÐCóð ð 27°r¶Ó;±¨Aœ Qž±ˆHÐ;ˆHØÐAÔAÜ�5‹z˜AŒ~Ü,Ø˜�xÐHÐIóð ô ˜u Q�xÓ(ˆCØ16°r¶Ó;±¨Aœ Qž±ˆHÐ;ˆHØÐ)Ô)Ü�5‹z˜QŒÜ,Ø˜�xÐ?Ð@óð ô ' u¨Q¥xÓ0‰Kä(Ð+;¸F¸8À1Ð)EÓFÐFà #Ð3Ð3ùò# <ùò <s   ÁDÂ*Dc               ó    € V ^8„  d   QhRRRR/# )r   r_   r5   r   r   r   )r   s   "r   r   r   p   s   € ÷ Uñ U¨#ð U°$ñ Ur   c                	ó¾  € V P                  V4      w  r#rEVR 8X  de   V P                  RRP                  V4      ,           4       V F5  pV P                  VRR7      '       d   K  \        P
                  ! RV4       K7  	  R# VR8X  de   V P                  RRP                  V4      ,           4       V F5  pV P                  VRR7      '       d   K  \        P
                  ! RV4       K7  	  R# VR	8X  de   V P                  R
RP                  V4      ,           4       V F5  pV P                  VRR7      '       d   K  \        P
                  ! RV4       K7  	  R# VR8X  de   V P                  RRP                  V4      ,           4       V F5  pV P                  VRR7      '       d   K  \        P
                  ! RV4       K7  	  R# VR8X  do   V P                  RP                  VRP                  V4      4      4       V F6  pV P                  WdR7      '       d   K  Rp\        P
                  ! WvV4       K8  	  R# VR8X  dn   V P                  RP                  VRP                  V4      4      4       V F5  pV P                  WdR7      '       d   K  \        P
                  ! RVV4       K7  	  R# VR8X  dM   V P                  RV,           4       V P                  RVR7      '       g   \        P
                  ! RV4       R# R# VR8X  dM   V P                  RV,           4       V P                  RVR7      '       g   \        P
                  ! RV4       R# R# \        RV R24      h) rW   zinclude Ú T)Úanchorz%warning: no files found matching '%s'rX   zexclude z9warning: no previously-included files found matching '%s'rY   zglobal-include Fz>warning: no files found matching '%s' anywhere in distributionrZ   zglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionr[   zrecursive-include {} {})Úprefixz:warning: no files found matching '%s' under directory '%s'r\   zrecursive-exclude {} {}zNwarning: no previously-included files matching '%s' found under directory '%s'r]   zgraft Nz+warning: no directories found matching '%s'r^   zprune z6no previously-included directories found matching '%s'z$this cannot happen: invalid action 'rV   )	re   r   rF   Úinclude_patternr   ÚwarningÚexclude_patternr   r   )r   r_   ra   rb   r'   rc   Úpatternr-   s   &&      r   Úprocess_template_lineÚFileList.process_template_linep   sù  € ð 04×/HÑ/HÈÓ/NÑ,ˆ˜3ð
 �YÔØ×Ñ˜Z¨#¯(©(°8Ó*<Õ<Ô=Û#�Ø×+Ñ+¨G¸DÐ+×AÔAÜ—K’KÐ GÈÖQó $ð �yÔ Ø×Ñ˜Z¨#¯(©(°8Ó*<Õ<Ô=Û#�Ø×+Ñ+¨G¸DÐ+×AÔAÜ—K’KØSØöó $ð Ð'Ô'Ø×ÑÐ.°·±¸(Ó1CÕCÔDÛ#�Ø×+Ñ+¨G¸EÐ+×BÔBÜ—K’Kð7ð  öó $ð Ð'Ô'Ø×ÑÐ.°·±¸(Ó1CÕCÔDÛ#�Ø×+Ñ+¨G¸EÐ+×BÔBÜ—K’KðBð  öó $ð Ð*Ô*Ø×ÑÐ6×=Ñ=¸cÀ3Ç8Á8ÈHÓCUÓVÔWÛ#�Ø×+Ñ+¨GÐ+×@Ô@ØV�CÜ—K’K ¨cÖ2ó $ð
 Ð*Ô*Ø×ÑÐ6×=Ñ=¸cÀ3Ç8Á8ÈHÓCUÓVÔWÛ#�Ø×+Ñ+¨GÐ+×@Ô@Ü—K’Kð>ð  Øöó $ð �wÔØ×Ñ˜X¨Õ3Ô4Ø×'Ñ'¨°[Ð'×AÒAÜ—’ÐIÈ;ÖWñ Bð �wÔØ×Ñ˜X¨Õ3Ô4Ø×'Ñ'¨°[Ð'×AÒAÜ—’ØMØöñ Bô )Ø6°v°h¸aÐ@óð r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# ©
r   ro   r5   rj   Úboolrk   ú
str | NoneÚis_regexzLiteral[False]r   r   )r   s   "r   r   r   É   ó<   € ÷ ñ àðð ðð ð	ð
 !ðð 
ñr   c                	ó   € R # r   r   ©r   ro   rj   rk   rv   s   &&&&&r   rl   ÚFileList.include_patternÈ   ó   € ñ r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# ©
r   ro   zstr | re.Pattern[str]rj   rt   rk   ru   rv   zLiteral[True]r   r   )r   s   "r   r   r   Ñ   ó<   € ÷ ñ à&ðð ðð ð	ð  ðð 
ñr   c               	ó   € R # r   r   ry   s   &&&&$r   rl   rz   Ð   ó   € ñ r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# r}   r   )r   s   "r   r   r   Ú   ó<   € ÷ ñ à&ðð ðð ð	ð
  ðð 
ñr   c                	ó   € R # r   r   ry   s   &&&&&r   rl   rz   Ù   r{   r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# ©	r   ro   zstr | re.Patternrj   rt   rk   ru   rv   r   r   )r   s   "r   r   r   á   s<   € ÷ -ñ -à!ð-ð ð-ð ð	-ð
 ð-ð 
ñ-r   c                ó^  € Rp\        WW44      pV P                  RVP                   R24       V P                  f   V P	                  4        V P                   FQ  pVP                  V4      '       g   K  V P                  RV,           4       V P                  P                  V4       RpKS  	  V# )a  Select strings (presumably filenames) from 'self.files' that
match 'pattern', a Unix-style wildcard (glob) pattern.  Patterns
are not quite the same as implemented by the 'fnmatch' module: '*'
and '?'  match non-special characters, where "special" is platform-
dependent: slash on Unix; colon, slash, and backslash on
DOS/Windows; and colon on Mac OS.

If 'anchor' is true (the default), then the pattern match is more
stringent: "*.py" will match "foo.py" but not "foo/bar.py".  If
'anchor' is false, both of these will match.

If 'prefix' is supplied, then only filenames starting with 'prefix'
(itself a pattern) and ending with 'pattern', with anything in between
them, will match.  'anchor' is ignored in this case.

If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and
'pattern' is assumed to be either a string containing a regex or a
regex object -- no translation is done, the regex is just compiled
and used as-is.

Selected strings will be added to self.files.

Return True if files are found, False otherwise.
Fz"include_pattern: applying regex r'rV   z adding T)Útranslate_patternr   ro   r   r*   Úsearchr   r7   )r   ro   rj   rk   rv   Úfiles_foundÚ
pattern_reÚnames   &&&&&   r   rl   rz   á   sœ   € ð@ ˆÜ& w¸ÓIˆ
Ø×ÑÐ=¸j×>PÑ>PÐ=QÐQRÐSÔTð �=‰=Ò Ø�L‰LŒNà—M”MˆDØ× Ñ  ×&Ô&Ø× Ñ  ¨dÕ!2Ô3Ø—
‘
×!Ñ! $Ô'Ø"’ñ	 "ð
 Ðr   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# rs   r   )r   s   "r   r   r     rw   r   c                	ó   € R # r   r   ry   s   &&&&&r   rn   ÚFileList.exclude_pattern  r{   r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# r}   r   )r   s   "r   r   r     r~   r   c               	ó   € R # r   r   ry   s   &&&&$r   rn   rŽ     r€   r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# r}   r   )r   s   "r   r   r   "  r‚   r   c                	ó   € R # r   r   ry   s   &&&&&r   rn   rŽ   !  r{   r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# r…   r   )r   s   "r   r   r   )  s<   € ÷ ñ à!ðð ðð ð	ð
 ðð 
ñr   c                ó€  € Rp\        WW44      pV P                  RVP                   R24       \        \	        V P
                  4      ^,
          RR4       Fe  pVP                  V P
                  V,          4      '       g   K-  V P                  RV P
                  V,          ,           4       V P
                  V RpKg  	  V# )zèRemove strings (presumably filenames) from 'files' that match
'pattern'.  Other parameters are the same as for
'include_pattern()', above.
The list 'self.files' is modified in place.
Return True if files are found, False otherwise.
Fz"exclude_pattern: applying regex r'rV   z
 removing TrN   )r‡   r   ro   rO   rP   r   rˆ   )r   ro   rj   rk   rv   r‰   rŠ   rQ   s   &&&&&   r   rn   rŽ   )  s¡   € ð ˆÜ& w¸ÓIˆ
Ø×ÑÐ=¸j×>PÑ>PÐ=QÐQRÐSÔTÜ”s˜4Ÿ:™:“¨Õ*¨B°Ö3ˆAØ× Ñ  §¡¨A¥×/Ô/Ø× Ñ  °·
±
¸1µÕ!=Ô>Ø—J‘J˜q�MØ"’ñ	 4ð
 Ðr   r   )NN©TNF)TN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r$   rC   Úcurdirr*   r   r7   r<   rI   rR   re   rp   r   rl   rn   Ú__static_attributes__r   r   r   r   r      sÌ   † ñ÷#õ!ð 57·I±I÷ %õõ õ!õ9õ"ò4õ<Uðp öó ðð öó ðð ôó ð÷-ð^ öó ðð öó ðð ôó ð÷ó r   r   c                ó²   € \         P                  \        P                  ! V RR7      4      pR V 4       p\        \        P                  P
                  V4      # )z
Find all files under 'path'
T)Úfollowlinksc              3  óv   "  € T F/  w  rq3 F$  p\         P                  P                  W4      x € K&  	  K1  	  R # 5ir   )rC   rD   rF   )Ú.0ÚbaseÚdirsr   Úfiles   &    r   Ú	<genexpr>Ú#_find_all_simple.<locals>.<genexpr>I  s3   é € ð Ù:DÑ%6 T°ÒQVÈŒ�‰�‰�T× Ð ÑQVÑ »*ùs   ‚79)Ú_UniqueDirsÚfilterrC   ÚwalkrD   Úisfile)rD   Ú
all_uniqueÚresultss   &  r   Ú_find_all_simpler¬   D  sE   € ô ×#Ñ#¤B§G¢G¨D¸dÔ$CÓD€JñÙ:Dó€Gô ”"—'‘'—.‘. 'Ó*Ð*r   c                  ó0   € ] tR tRtRtR t]R 4       tRtR# )r¦   iO  zv
Exclude previously-seen dirs from walk results,
avoiding infinite recursion.
Ref https://bugs.python.org/issue44497.
c                ó¶   € Vw  r#p\         P                  ! V4      pVP                  VP                  3pW`9   pV'       d   VR V P	                  V4       V'       * # )zŽ
Given an item from an os.walk result, determine
if the item represents a unique dir for this instance
and if not, prevent further traversal.
:NNN)rC   ÚstatÚst_devÚst_inoÚadd)r   Ú	walk_itemr¡   r¢   r   r¯   Ú	candidateÚfounds   &&      r   Ú__call__Ú_UniqueDirs.__call__V  sS   € ð &Ñˆ�EÜ�wŠw�t‹}ˆØ—K‘K §¡Ð,ˆ	ØÑ!ˆßØ�Q�Ø�‰�ÔØŒyÐr   c                	ó$   € \        V ! 4       V4      # r   )r§   )Úclsr:   s   &&r   r§   Ú_UniqueDirs.filtere  s   € ä‘c“e˜UÓ#Ð#r   r   N)	r–   r—   r˜   r™   rš   r¶   Úclassmethodr§   rœ   r   r   r   r¦   r¦   O  s    † ñòð ñ$ó ô$r   r¦   c               ó   € V ^8„  d   QhRR/# )r   r'   r(   r   )r   s   "r   r   r   j  s   € ÷ 	ñ 	Ð'ñ 	r   c                óÎ   € \        V 4      pV \        P                  8X  d<   \        P                  ! \        P
                  P                  V R7      p\        W!4      p\        V4      # )z€
Find all files under 'dir' and return the list of full filenames.
Unless dir is '.', return full filenames with dir prepended.
)Ústart)	r¬   rC   r›   Ú	functoolsÚpartialrD   ÚrelpathrB   Úlist)r'   r   Úmake_rels   &  r   r*   r*   j  sH   € ô
 ˜SÓ!€EØ
Œb�i‰iÔÜ×$Ò$¤R§W¡W§_¡_¸CÔ@ˆÜ�HÓ$ˆÜ�‹;Ðr   c                óº   € \         P                  ! V 4      p\        P                  p\        P                  R8X  d   RpRV R2p\        P
                  ! RW14      pV# )zÖTranslate a shell-like glob pattern to a regular expression; return
a string containing the regex.  Differs from 'fnmatch.translate()' in
that '*' does not match "special characters" (which are
platform-specific).
Ú\z\\\\z\1[^Ú]z((?<!\\)(\\\\)*)\.)ÚfnmatchÚ	translaterC   ÚsepÚreÚsub)ro   rŠ   rÉ   Úescapeds   &   r   Ú
glob_to_rerÍ   v  sU   € ô ×"Ò" 7Ó+€Jô �&‰&€CÜ	‡v�v�„~ð ˆØ�c�U˜!ˆn€GÜ—’Ð-¨wÓC€JØÐr   c                ó  € V'       d/   \        V \        4      '       d   \        P                  ! V 4      # V # \	        R4      P                  R4      w  rEpV '       d=   \	        V 4      pVP                  V4      '       d   VP                  V4      '       g   Q hMRpVeÀ   \	        V4      pVP                  V4      '       d   VP                  V4      '       g   Q hV\        V4      \        V4      \        V4      ,
           p\        P                  p	\        P                  R8X  d   Rp	V\        V4      \        V4      \        V4      ,
           pV RV V	 RV V 2pMV'       d   V RV\        V4      R  2p\        P                  ! V4      # )zóTranslate a shell-like wildcard pattern to a compiled regular
expression.  Return the compiled regex.  If 'is_regex' true,
then 'pattern' is directly compiled to a regex (if it's a string)
or just returned as-is (assumes it's a regex object).
Ú_Ú NrÅ   z\\z\Az.*)Ú
isinstancer5   rÊ   ÚcompilerÍ   Ú	partitionÚ
startswithÚendswithrP   rC   rÉ   )
ro   rj   rk   rv   r¾   rÏ   ÚendrŠ   Ú	prefix_rerÉ   s
   &&&&      r   r‡   r‡   �  sT  € ÷ Ü�gœs×#Ò#Ü—:’:˜gÓ&Ð&àˆNô ˜s“O×-Ñ-¨cÓ2�M€EˆcçÜ Ó(ˆ
Ø×$Ñ$ U×+Ò+°
×0CÑ0CÀC×0HÒ0HÐHÐHÐ0Hàˆ
àÒÜ˜vÓ&ˆ	Ø×#Ñ# E×*Ò*¨y×/AÑ/AÀ#×/FÒ/FÐFÐFØœc %›j¬3¨y«>¼CÀ»HÕ+DÐEˆ	Ü�f‰fˆÜ�6‰6�TŒ>ØˆCØ¤ E£
¬S°«_¼sÀ3»xÕ-GÐHˆ
Ø˜˜r ) ¨S¨E°°J°<À¸uÐE‰
çØ"˜G 2 j´°U³°Ð&>Ð%?Ð@ˆJä�:Š:�jÓ!Ð!r   r•   )rš   Ú
__future__r   rÇ   r¿   rC   rÊ   Úcollections.abcr   Útypingr   r   Ú_logr   Úerrorsr   r   Úutilr	   r   r¬   Úsetr¦   r›   r*   rÍ   r‡   r   r   r   Ú<module>rß      s`   ðñõ #ã Û Û 	Û 	Ý $ß $å ß BÝ ÷iñ iò^	+ô$�#ô $ð6 +-¯)©)÷ 	òö.""r   