Ë
    nûàgG"  ã                   óÆ   — d dl Zd dlZd dlZd dlZd dlmZ d dlZd dl	Z
d dlZ G d„ d«      Z G d„ d«      Z G d„ d«      Zej                   j#                  d	«      d
„ «       Zy)é    N)Úcleandocc                   óZ   — e 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y)ÚTestPackageIndexc                 ó¸   — d}|dz  } dj                  «       j                  di t        «       ¤Ž}t        j                  j
                  j                  |«      sJ ‚y )Nz&http://other_url?:action=show_md5&amp;z'digest=0123456789abcdef0123456789abcdefz€
            <a href="http://some_url">Name</a>
            (<a title="MD5 hash"
            href="{hash_url}">md5</a>)
        © )ÚlstripÚformatÚlocalsÚ
setuptoolsÚpackage_indexÚPYPI_MD5Úmatch)ÚselfÚhash_urlÚdocs      ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/setuptools/tests/test_packageindex.pyÚ
test_regexzTestPackageIndex.test_regex   s^   € Ø;ˆØÐ=Ñ=ˆðð ÷ ‰F‹H—V‘Vñ	(ô %›hñ	(ˆô
 ×'Ñ'×0Ñ0×6Ñ6°sÔ;Ð;Ñ;ó    c                 ó:  — t         j                  j                  «       }d}t        j                  t
        t        j                  |«      ¬«      5  |j                  |«      }t        |t        j                  j                  «      sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nz.http://127.0.0.1:0/nonesuch/test_package_index©r   ©r   r   ÚPackageIndexÚpytestÚraisesÚ	ExceptionÚreÚescapeÚopen_urlÚ
isinstanceÚurllibÚerrorÚ	HTTPError©r   ÚindexÚurlÚvs       r   Útest_bad_url_bad_portz&TestPackageIndex.test_bad_url_bad_port   sn   € Ü×(Ñ(×5Ñ5Ó7ˆØ>ˆÜ�]‰]œ9¬B¯I©I°c«NÔ;ñ 	9Ø—‘˜sÓ#ˆAÜ˜a¤§¡×!7Ñ!7Ô8Ð8Ñ8÷	9÷ 	9ñ 	9ús   Á8BÂBc                 ó>  — t         j                  j                  d¬«      }d}t        j                  t
        t        j                  |«      ¬«      5  |j                  |«      }t        |t        j                  j                  «      sJ ‚	 d d d «       y # 1 sw Y   y xY w)N©zwww.example.com©ÚhostszMurl:%20https://svn.plone.org/svn/collective/inquant.contentmirror.plone/trunkr   r   r#   s       r   Útest_bad_url_typoz"TestPackageIndex.test_bad_url_typo    sv   € ô ×(Ñ(×5Ñ5Ð<PÐ5ÓQˆà]ˆä�]‰]œ9¬B¯I©I°c«NÔ;ñ 	9Ø—‘˜sÓ#ˆAÜ˜a¤§¡×!7Ñ!7Ô8Ð8Ñ8÷	9÷ 	9ñ 	9ús   Á8BÂBc                 óÞ   — t         j                  j                  d¬«      }d„ }||_        d}t	        j
                  t        d¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)Nr)   r*   c                  ó@   — t         j                  j                  d«      ‚)NÚline)ÚhttpÚclientÚBadStatusLine)Úargss    r   Ú_urlopenz?TestPackageIndex.test_bad_url_bad_status_line.<locals>._urlopen/   s   € Ü—+‘+×+Ñ+¨FÓ3Ð3r   zhttp://example.comr/   r   )r   r   r   Úopenerr   r   r   r   )r   r$   r4   r%   s       r   Útest_bad_url_bad_status_linez-TestPackageIndex.test_bad_url_bad_status_line,   s^   € Ü×(Ñ(×5Ñ5Ð<PÐ5ÓQˆò	4ð  ˆŒØ"ˆÜ�]‰]œ9¨GÔ4ñ 	 Ø�N‰N˜3Ô÷	 ÷ 	 ñ 	 ús   ÁA#Á#A,c                 ó  — t         j                  j                  d¬«      }d}	 |j                  |«       t        d«      ‚# t        j
                  j                  $ r#}t        |«      }d|v s
d|v sd|v sJ ‚Y d}~yd}~ww xY w)	zO
        A bad URL with a double scheme should raise a DistutilsError.
        r)   r*   z2http://http://svn.pythonpaste.org/Paste/wphp/trunkznonnumeric portzgetaddrinfo failedzName or service not knownNzDid not raise)	r   r   r   r   Ú	distutilsÚerrorsÚDistutilsErrorÚstrÚRuntimeError)r   r$   r%   r!   Úmsgs        r   Útest_bad_url_double_schemez+TestPackageIndex.test_bad_url_double_scheme7   s’   € ô ×(Ñ(×5Ñ5Ð<PÐ5ÓQˆð Cˆð		Ø�N‰N˜3Ôô ˜?Ó+Ð+øô ×Ñ×.Ñ.ò 	Ü�e“*ˆCà! SÑ(Ø'¨3Ñ.Ø.°#Ñ5ðð6ô ûð	ús   ¤A  Á B ÁA;Á;B c                 óp   — t         j                  j                  d¬«      }d}|j                  |d«      sJ ‚y )Nr)   r*   zfile:///tmp/test_package_indexT)r   r   r   Úurl_ok)r   r$   r%   s      r   Útest_url_okzTestPackageIndex.test_url_okK   s5   € Ü×(Ñ(×5Ñ5Ð<PÐ5ÓQˆØ.ˆØ�|‰|˜C Ô&Ð&Ñ&r   c                 óÀ   — t         j                  j                  } |d«      }d}||k(  sJ ‚ |d«      }d}||k(  sJ ‚ |d«      }d}||k(  sJ ‚ |d«      }d}||k(  sJ ‚y )	Nzreportlab-2.5.win32-py2.4.exe)úreportlab-2.5z2.4Úwin32zreportlab-2.5.win32.exe)rC   NrD   z!reportlab-2.5.win-amd64-py2.7.exe)rC   z2.7ú	win-amd64zreportlab-2.5.win-amd64.exe)rC   NrE   )r   r   Úparse_bdist_wininst)r   ÚparseÚactualÚexpecteds       r   Útest_parse_bdist_wininstz)TestPackageIndex.test_parse_bdist_wininstP   s‹   € Ü×(Ñ(×<Ñ<ˆáÐ6Ó7ˆØ2ˆØ˜Ò!Ð!Ð!áÐ0Ó1ˆØ1ˆØ˜Ò!Ð!Ð!áÐ:Ó;ˆØ6ˆØ˜Ò!Ð!Ð!áÐ4Ó5ˆØ5ˆØ˜Ò!Ð!Ñ!r   c                 ó~   — t         j                  j                  j                  } |d«      \  }}|dk(  sJ ‚|dk(  sJ ‚y)zA
        Test the basic usage of _vcs_split_rev_from_url
        zhttps://example.com/bar@2995zhttps://example.com/barÚ2995N)r   r   r   Ú_vcs_split_rev_from_url)r   Úvsrfur%   Úrevs       r   Útest__vcs_split_rev_from_urlz-TestPackageIndex.test__vcs_split_rev_from_urlc   sE   € ô ×(Ñ(×5Ñ5×MÑMˆÙÐ7Ó8‰ˆˆSØÐ/Ò/Ð/Ð/Ø�fŠ}Ð‰}r   c                 ó>  — |dz  }|j                  d«      5 }|j                  d«       ddd«       dt        j                  j	                  t        |«      «      z   dz   }t        j                  j                  |«      }d|j                  «       v sJ ‚y# 1 sw Y   ŒkxY w)zR
        local_open should be able to read an index from the file system.
        z
index.htmlÚwz<div>content</div>Nzfile:ú/Úcontent)
ÚopenÚwriter    ÚrequestÚpathname2urlr;   r   r   Ú
local_openÚread)r   ÚtmpdirÚ
index_fileÚfr%   Úress         r   Útest_local_indexz!TestPackageIndex.test_local_indexl   sŠ   € ð ˜lÑ*ˆ
Ø�_‰_˜SÓ!ð 	* QØ�G‰GÐ(Ô)÷	*àœŸ™×3Ñ3´C¸³KÓ@Ñ@À3ÑFˆÜ×&Ñ&×1Ñ1°#Ó6ˆØ˜CŸH™H›JÑ&Ð&Ñ&÷		*ð 	*ús   —BÂBc                 ó¼  — ddg}g d¢}g d¢}dg}dg}g d¢}|D ���	�
�cg c]H  }|D ]A  }t        |||gdg«      D ],  }	|D ]%  }
|
D �cg c]  }dj                  |||	|g«      ‘Œ c}‘Œ' Œ. ŒC ŒJ }}
}	}}}|D ]X  \  }}t        t        j                  j                  d|z   «      «      }|d	   j                  dk(  sJ ‚|d
   j                  |k(  rŒXJ ‚ yc c}w c c}}
}	}}w )z6
        EGG fragments must comply to PEP 440
        Ú z1!)Ú0z0.0z0.0.0)Úa0Úb0Úrc0z.post0z.dev0))ra   ra   )ú	+ubuntu.0rf   )z	+ubuntu-0rf   )z	+ubuntu_0rf   z3http://example.com/example-foo.zip#egg=example-foo-r   é   N)ÚsumÚjoinÚlistr   r   Údistros_for_urlÚversion)r   ÚepochÚreleasesÚpreÚpostÚdevÚlocalÚeÚrÚpÚlocsÚlocÚversionsr&   ÚvcÚdistss                   r   Útest_egg_fragmentz"TestPackageIndex.test_egg_fragmentw   s?  € ð
 Øð
ˆò
ˆò

ˆð
 ˆzˆàð
ˆò
ˆð ÷
ò 
àØò
ð Ü˜#˜t SÐ)¨B¨4Ó0ò	
ð Øò
ð
 ð	 15Ö5¨ˆR�W‰W�a˜˜A˜s�^Õ$Ô5ð
Ø5ð
Ø5ð
Ø5ð
ˆô 
ð ò 	*‰EˆAˆrÜÜ×(Ñ(×8Ñ8ØIÈAÑMóóˆEð
 ˜‘8×#Ñ# rÒ)Ð)Ð)Ø˜‘8×#Ñ# rÓ)Ð)Ð)ñ	*ùò 6ùö
s   Ÿ&CÁCÁ!CÃCc                 ó   — d}t         j                  j                  «       }|dz  }|j                  dddd|g«       |j                  dd|ddd	g«       |j	                  ||«      }|t        |«      k(  sJ ‚t        |j                  «      d
k(  sJ ‚y )Nz7git+https://github.example/group/project@master#egg=foozproject@masterÚgitÚcloneú--quietú$https://github.example/group/projectz-CÚcheckoutÚmasteré   )r   r   r   ÚregisterÚdownloadr;   ÚlenÚcalls)r   Útmp_pathÚfpr%   r$   Úexpected_dirÚresults          r   Útest_download_git_with_revz+TestPackageIndex.test_download_git_with_rev£   sš   € ØGˆÜ×(Ñ(×5Ñ5Ó7ˆàÐ"2Ñ2ˆØ
�‰ØØØØ2Øð
ô 	ð 	�‰�U˜D ,°
¸IÀxÐPÔQà—‘  XÓ.ˆàœ˜\Ó*Ò*Ð*Ð*Ü�2—8‘8‹} Ò!Ð!Ñ!r   c                 óž   — d}t         j                  j                  «       }|dz  }|j                  dddd|g«       |j	                  ||«       y )Nz0git+https://github.example/group/project#egg=fooÚprojectr}   r~   r   r€   )r   r   r   r„   r…   )r   rˆ   r‰   r%   r$   rŠ   s         r   Útest_download_git_no_revz)TestPackageIndex.test_download_git_no_rev¶   sU   € Ø@ˆÜ×(Ñ(×5Ñ5Ó7ˆà )Ñ+ˆØ
�‰ØØØØ2Øð
ô 	ð 	�‰�s˜HÕ%r   c                 óô   — d}t         j                  j                  «       }d}t        j                  t
        j                  j                  |¬«      5  |j                  ||«       d d d «       y # 1 sw Y   y xY w)Nz'svn+https://svn.example/project#egg=fooz!.*SVN download is not supported.*r   )	r   r   r   r   r   r8   r9   r:   r…   )r   rˆ   r%   r$   r=   s        r   Útest_download_svnz"TestPackageIndex.test_download_svnÄ   s]   € Ø7ˆÜ×(Ñ(×5Ñ5Ó7ˆà2ˆÜ�]‰]œ9×+Ñ+×:Ñ:À#ÔFñ 	*Ø�N‰N˜3 Ô)÷	*÷ 	*ñ 	*ús   ÁA.Á.A7N)Ú__name__Ú
__module__Ú__qualname__r   r'   r,   r6   r>   rA   rJ   rP   r_   r{   rŒ   r�   r‘   r   r   r   r   r      sD   „ ò<ò9ò
9ò	 ò,ò('ò
"ò&ò	'ò**òX"ò&&ó*r   r   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestContentCheckersc                 óø   — t         j                  j                  j                  d«      }|j	                  dj                  d«      «       |j                  j                  «       dk(  sJ ‚|j                  «       sJ ‚y )Nú3http://foo/bar#md5=f12895fdffbd45007040d2e44df98478z$You should probably not be using MD5ÚasciiÚ f12895fdffbd45007040d2e44df98478)	r   r   ÚHashCheckerÚfrom_urlÚfeedÚencodeÚhashÚ	hexdigestÚis_valid©r   Úcheckers     r   Útest_md5zTestContentCheckers.test_md5Î   si   € Ü×*Ñ*×6Ñ6×?Ñ?ØAó
ˆð 	�‰Ð;×BÑBÀ7ÓKÔLØ�|‰|×%Ñ%Ó'Ð+MÒMÐMÐMØ×ÑÔ!Ð!Ñ!r   c                 óº   — t         j                  j                  j                  d«      }|j	                  dj                  d«      «       |j                  «       sJ ‚y)z<Content checks should succeed silently if no hash is presentz1http://foo/bar#something%20completely%20differentÚanythingr™   N©r   r   r›   rœ   r�   rž   r¡   r¢   s     r   Útest_other_fragmentz'TestContentCheckers.test_other_fragmentÖ   sL   € ä×*Ñ*×6Ñ6×?Ñ?Ø?ó
ˆð 	�‰�Z×&Ñ& wÓ/Ô0Ø×ÑÔ!Ð!Ñ!r   c                 óº   — t         j                  j                  j                  d«      }|j	                  dj                  d«      «       |j                  «       sJ ‚y)z0Content checks should succeed if a hash is emptyzhttp://foo/bar#md5=r¦   r™   Nr§   r¢   s     r   Útest_blank_md5z"TestContentCheckers.test_blank_md5Þ   sH   € ä×*Ñ*×6Ñ6×?Ñ?Ð@UÓVˆØ�‰�Z×&Ñ& wÓ/Ô0Ø×ÑÔ!Ð!Ñ!r   c                 óx   — t         j                  j                  j                  d«      }|j                  dk(  sJ ‚y )Nr˜   Úmd5)r   r   r›   rœ   Ú	hash_namer¢   s     r   Útest_get_hash_name_md5z*TestContentCheckers.test_get_hash_name_md5ä   s7   € Ü×*Ñ*×6Ñ6×?Ñ?ØAó
ˆð × Ñ  EÒ)Ð)Ñ)r   c                 óŠ   — t         j                  j                  j                  d«      }|j	                  d„ d«      }|dk(  sJ ‚y )Nr˜   c                 ó   — | S )Nr   )Úxs    r   ú<lambda>z1TestContentCheckers.test_report.<locals>.<lambda>î   s   €  q€ r   zMy message about %szMy message about md5)r   r   r›   rœ   Úreport)r   r£   Úreps      r   Útest_reportzTestContentCheckers.test_reportê   sC   € Ü×*Ñ*×6Ñ6×?Ñ?ØAó
ˆð �n‰n™[Ð*?Ó@ˆØÐ,Ò,Ð,Ñ,r   N)r’   r“   r”   r¤   r¨   rª   r®   rµ   r   r   r   r–   r–   Í   s   „ ò"ò"ò"ò*ó-r   r–   c                   ó   — e Zd Zd„ Zy)ÚTestPyPIConfigc                 óä   — |dz  }|j                  t        d«      d¬«       t        j                  j	                  «       }|j
                  d   }|j                  dk(  sJ ‚|j                  dk(  sJ ‚y )Nz.pypircz“
                [pypi]
                repository=https://pypi.org
                username=jaraco
                password=pity%
                zutf-8)Úencodingzhttps://pypi.orgÚjaracozpity%)Ú
write_textr   r   r   Ú
PyPIConfigÚcreds_by_repositoryÚusernameÚpassword)r   Útmp_home_dirÚpypircÚcfgÚcreds        r   Útest_percent_in_passwordz'TestPyPIConfig.test_percent_in_passwordó   s|   € Ø 	Ñ)ˆØ×ÑÜðóð ð 	ô 
	
ô ×&Ñ&×1Ñ1Ó3ˆØ×&Ñ&Ð'9Ñ:ˆØ�}‰} Ò(Ð(Ð(Ø�}‰} Ò'Ð'Ñ'r   N)r’   r“   r”   rÄ   r   r   r   r·   r·   ò   s   „ ó(r   r·   rg   c                  óV   — t         j                  j                  j                  d«       y)z;
    REL should not hang on a contrived attack string.
    a  < rel=                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                N)r   r   ÚRELÚsearchr   r   r   Útest_REL_DoSrÈ     s   € ô
 ×Ñ× Ñ ×'Ñ'Ð(>Õ?r   )Úhttp.clientr0   r   Úurllib.errorr    Úurllib.requestÚinspectr   r   Úsetuptools.package_indexr   Údistutils.errorsr8   r   r–   r·   ÚmarkÚtimeoutrÈ   r   r   r   ú<module>rÑ      sd   ðÛ Û 	Û Û Ý ã ã ã ÷|*ñ |*÷~"-ñ "-÷J(ñ (ð( ‡�×Ñ�QÓñ@ó ñ@r   