§
|<ˆjàd ã óx — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlm
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d lmZ d d
lmZ d dlmZ d dlmZ d d
lmZ d dlmZ d dl mZ d dl m!Z! d dl m"Z" d dl m#Z# d dl m$Z$ d dl m%Z% d dl m&Z& d dl m'Z' d dl m(Z( d dl m)Z) d dl m*Z* d dl m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 dZ2 e*de¬¦ « Z3eeeefZ4d Z5d!„ Z6d"e3d#e3fd$„Z7d"e8d%e+e9e(e)e9 e9e&e j: f f d&ed#e;fd'„Zd"ed#dfd*„Z?d+ed,e8d#e$e fd-„Z@d.e#e d,e8d#e$e8 fd/„ZAd+ed,e8d#e$e8 fd0„ZBd#eCfd1„ZDd+ed2e+e8ef d3e+e8ef d#dfd4„ZEdld+ed,e8d6eCd#efd7„ZFd8ed#efd9„ZGe jH fd:efd;„ZId"ed#dfd<„ZJd"ed=eKd#e;fd>„ZLd"ed=eKd#dfd?„ZMd+ed,e8d@eCd#e$e fdA„ZNd+efdB„ZOd+ed,e8d@eCd=eKd#df
dC„ZPd+ed,e8d@eCdDeKd6eCd#efdE„ZQdFe8dGed#efdH„ZRdIe8d"e+e8dJf d#e;fdK„ZSdLe8d#e'e8 fdM„ZTdN„ ZU G dO„ dPe
¦ « ZV G dQ„ dReW¦ « ZXeVjY dSœd8e+e8dJf d6e+e8eVf d+ed#efdT„ZZej[ \ dU¦ « rdVe8dWe8d#e;fdX„Z]n
dVe8dWe8d#e;fdY„Z]d"ed+ed#e8fdZ„Z^d[e"e8ef d\e8d#dfd]„Z_d"ed#e&e fd^„Z`d"e+e8dJf d#e%d_ fd`„Zad"e+e8dJf dae!d_ge;f d#e$d_ fdb„Zbd"e+ee8f d#efdc„Zcddedeed#e&e fdf„Zddgedhed#e8fdi„Zedjed2ed#dfdk„ZfdS )mé N)ÚEnum)ÚEBADF)ÚELOOP)ÚENOENT)ÚENOTDIR)Úpartial)Ú
expanduser)Ú
expandvars)Úisabs)Úsep)ÚPath)ÚPurePath)Ú
ModuleType)ÚCallable)ÚDict)ÚIterable)ÚIterator)ÚList)ÚOptional)ÚSet)ÚTuple)ÚType)ÚTypeVar)ÚUnion)Úassert_never)Úskip)Ú
PytestWarningi€ô Ú_AnyPurePath)Úbound)é i� c ób — t | dd ¦ « t v pt | dd ¦ « t v S )NÚerrnoÚwinerror)ÚgetattrÚ_IGNORED_ERRORSÚ_IGNORED_WINERRORS)Ú exceptions úa/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/_pytest/pathlib.pyÚ
_ignore_errorr) ; s6 € å� ˜7 DÑ)Ô)_Ð<ð FÝ�9˜j¨$Ñ/Ô/Õ3EÐEðó ÚpathÚreturnc ó, — | d¦ « S )Nz.lock)Újoinpath©r+ s r( Ú
get_lock_pathr0 B s € Ø�=Š=˜Ñ!Ô!Ð!r* ÚexcinfoÚ
start_pathc ó ‡— t |t ¦ « r|}n|d }t |t ¦ « rdS t |t ¦ « s9t j t
d|› dt |¦ « › d|› �¦ « ¦ « dS | t j t j
t j fvrU| t j fvrDt j t
d
| |t |¦ « |¦ « ¦ « ¦ « dS ddlŠd t d
dfˆfd„}t! |¦ « }| ¦ « r*|j D ]"} |t |¦ « ¦ « ||k r nŒ# |t |¦ « ¦ « | |¦ « dS )
zhHandle known read-only errors during rmtree.
The returned value is used only by our own tests.
é Fz(rm_rf) error removing ú
z: z4(rm_rf) unknown function {} when removing {}:
{}: {}r NÚpr, c ó„ •— t j | ¦ « j }t j | |‰j z ‰j z ¦ « d S ©N)ÚosÚstatÚst_modeÚchmodÚS_IRUSRÚS_IWUSR)r6 Úmoder: s €r( Úchmod_rwz on_rm_rf_error..chmod_rwr s9 ø€ ÝŒw�q‰zŒzÔ!ˆÝ
Œ��D˜4œ<Ñ'¨$¬,Ñ6Ñ7Ô7Ð7Ð7Ð7r* T)Ú
isinstanceÚ
BaseExceptionÚFileNotFoundErrorÚPermissionErrorÚwarningsÚwarnr Útyper9 ÚrmdirÚremoveÚunlinkÚopenÚformatr: Ústrr
Úis_fileÚparents) Úfuncr+ r1 r2 Úexcr@ r6 Úparentr: s @r( Úon_rm_rf_errorrS F sÁ ø€ õ �'�=Ñ)Ô)ð Øˆˆà�aŒjˆõ �#Õ(Ñ)Ô)ð Øˆuå�c�?Ñ+Ô+ð ÝŒ
ÝÐN°DÐNÐN½DÀ¹I¼IÐNÐNÈÐNÐNÑOÔOñ
ô
ð
ð ˆuà•B”H�bœi¬Ð3Ð3Ð3Ø�œ�zÐ!Ð!ÝŒMÝØK×RÒRؘd¥D¨¡I¤I¨sñô ñô ñ
ô
ð
ð ˆuð €K€K€Kð8•Cð 8˜Dð 8ð 8ð 8ð 8ð 8ð 8õ
ˆT‰
Œ
€A؇y‚y�{„{ð Ø”ið ð ˆF؈H•S˜‘[”[Ñ!Ô!Ð!à˜Ò#Ð#Ø�ð $à€H�S�‰YŒYÑÔÐà€Dˆ�J„J€J؈4r* c ó¾ — t j d¦ « r=| ¦ « } t t t
| ¦ « ¦ « ¦ « } | S )a0 Get the extended-length version of a path (Windows).
On Windows, by default, the maximum length of a path (MAX_PATH) is 260
characters, and operations on paths longer than that fail. But it is possible
to overcome this by converting the path to "extended-length" form before
performing the operation:
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation
On Windows, this function returns the extended-length absolute version of path.
On other platforms it returns path unchanged.
Úwin32)ÚsysÚplatformÚ
startswithÚresolver
Úget_extended_length_path_strrM r/ s r( Úensure_extended_length_pathr[ … sJ € õ „|×Ò˜wÑ'Ô'ð =Ø�|Š|‰~Œ~ˆÝÕ0µ°T±´Ñ;Ô;Ñ<Ô<ˆØ€Kr* c óŠ — d}d}| ||f¦ « r| S | d¦ « r
|| dd… z S || z S )z1Convert a path to a Windows extended length path.z\\?\z\\?\UNC\z\\é N)rX )r+ Úlong_path_prefixÚunc_long_path_prefixs r( rZ rZ — s` € à ÐØ)ÐØ‡‚Ð(Ð*>Ð?Ñ@Ô@ð Øˆà‡‚�vÑÔð /Ø# d¨1¨2¨2¤hÑ.Ð.ؘdÑ"Ð"r* c ó — t | ¦ « } t t | ¬¦ « }t j dk r%t j t | ¦ « |¬¦ « dS t j t | ¦ « |¬¦ « dS )zNRemove the path contents recursively, even if some elements
are read-only.)r2 )é é )Úonexc)ÚonerrorN)r[ r rS rV Úversion_infoÚshutilÚrmtreerM )r+ rd s r( Úrm_rfrh £ ss € õ ' tÑ,Ô,€DÝ•n°Ð6Ñ6Ô6€GÝ
Ô˜7Ò"Ð"ÝŒ
•c˜$‘i”i wÐ/Ñ/Ô/Ð/Ð/Ð/åŒ
•c˜$‘i”i¨Ð1Ñ1Ô1Ð1Ð1Ð1r* ÚrootÚprefixc # óÀ K — | ¦ « }| ¦ « D ]2}|j ¦ « |¦ « r|V — Œ3dS )zGFind all elements in root that begin with the prefix, case insensitive.N)ÚlowerÚiterdirÚnamerX )ri rj Úl_prefixÚxs r( Ú
find_prefixedrq ® s^ è è € à�|Š|‰~Œ~€HØ
�\Š\‰^Œ^ð ð ˆØŒ6�<Š<‰>Œ>×$Ò$ XÑ.Ô.ð ØˆGˆGˆGøðð r* Úiterc # óT K — t |¦ « }| D ]}|j |d… V — ŒdS )zšReturn the parts of the paths following the prefix.
:param iter: Iterator over path names.
:param prefix: Expected prefix of the path names.
N)Úlenrn )rr rj Úp_lenr6 s r( Úextract_suffixesrv ¶ sE è è € õ
�‰KŒK€EØ
ð ð ˆØŒf�U�V�VŒnÐÐÐÐðð r* c ó> — t t | |¦ « |¦ « S )z+Combine find_prefixes and extract_suffixes.)rv rq )ri rj s r( Ú
find_suffixesrx Á s € å�M¨$°Ñ7Ô7¸Ñ@Ô@Ð@r* c óD — t | ¦ « S # t $ r Y dS w xY w)z0Parse number path suffixes, returns -1 on error.éÿÿÿÿ)ÚintÚ
ValueError)Ú maybe_nums r( Ú parse_numr~ Æ s5 € ðÝ�9‰~Œ~ÐøÝð ð ð Øˆrˆrðøøøs ‚ ‘
žÚtargetÚlink_toc óÊ — | |¦ « } | ¦ « n# t $ r Y nw xY w | |¦ « dS # t $ r Y dS w xY w)a Helper to create the current symlink.
It's full of race conditions that are reasonably OK to ignore
for the context of best effort linking to the latest test run.
The presumption being that in case of much parallelism
the inaccuracy is going to be acceptable.
N)r. rJ ÚOSErrorÚ
symlink_toÚ Exception)ri r r€ Úcurrent_symlinks r( Ú_force_symlinkr† Î s� € ð —m’m FÑ+Ô+€Oð
Ø×ÒÑ Ô Ð Ð øÝð
ð
ð
؈ð
øøøð
Ø×"Ò" 7Ñ+Ô+Ð+Ð+Ð+øÝð
ð
ð
؈ˆð
øøøs —, ¬
9¸9½A Á
A"Á!A"éÀ r? c
óŠ — t d¦ « D ]�}t t t t | |¦ « ¦ « d¬¦ « }|dz }| |› |› �¦ « } | |¬¦ « t | |dz |¦ « |c S # t $ r Y Œ�w xY wt d
|| ¬¦ « ¦ « ‚) zKCreate a directory with an increased number as suffix for the given prefix.é
rz ©Údefaultr4 ©r? ÚcurrentzKcould not create numbered dir with prefix {prefix} in {root} after 10 tries)rj ri )ÚrangeÚmaxÚmapr~ rx r. Úmkdirr† r„ r‚ rL )ri rj r? ÚiÚmax_existingÚ
new_numberÚnew_paths r( Úmake_numbered_dirr– ä së € å
�2‰YŒYð
ð
ˆå�3�y-¸¸fÑ*EÔ*EÑFÔFÐPRÐSÑSÔSˆØ! AÑ%ˆ
Ø—=’= FÐ!8¨JÐ!8Ð!8Ñ9Ô9ˆð Ø�NŠN ˆNÑ%Ô%Ð%õ
˜4 ¨)Ñ!3°XÑ>Ô>Ð>؈OˆOˆOøõ ð ð ð ØˆDð øøøõ ð
0ß06²¸fÈ4°Ñ0PÔ0Pñ
ô
ð
s Á#BÂ
BÂBr6 c óþ — t | ¦ « } t j t |¦ « t j t j z t j z d¦ « }t j ¦ « }t |¦ « ¦ « }t j ||¦ « t j
|¦ « | ¦ « st d¦ « ‚|S # t $ r}t d| › �¦ « |‚d}~ww xY w)z2Create a lock to prevent premature folder cleanup.i¤ z/lock path got renamed after successful creationzcannot create lockfile in N)r0 r9 rK rM ÚO_WRONLYÚO_CREATÚO_EXCLÚgetpidÚencodeÚwriteÚcloserN r‚ ÚFileExistsError)r6 Ú lock_pathÚfdÚpidÚspidÚes r( Úcreate_cleanup_lockr¥ ù sâ € å˜aÑ Ô €IðÝ
ŒW•S˜‘^”^¥R¤[µ2´:Ñ%=ÅÄ Ñ%IÈ5Ñ
QÔ
Qˆõ Œi‰kŒkˆÝ�3‰xŒx�ŠÑ Ô ˆÝ
Œ��TÑÔÐÝ
Œ�‰ŒˆØ× Ò Ñ"Ô"ð MÝÐKÑLÔLÐLØÐøõ ð ?ð ?ð ?ÝÐ6°1Ð6Ð6Ñ7Ô7¸QÐ>øøøøð?øøøs ‘AC Ã
C<Ã$C7Ã7C<r c ól — t j ¦ « }| |fdt dt ddfd„} ||¦ « S )zFRegister a cleanup function for removing a lock, by default on atexit.r Úoriginal_pidr, Nc óˆ — t j ¦ « }||k rd S | ¦ « d S # t $ r Y d S w xY wr8 )r9 r› rJ r‚ )r r§ Úcurrent_pids r( Úcleanup_on_exitz6register_cleanup_lock_removal..cleanup_on_exit s\ € Ý”i‘k”kˆØ˜,Ò&Ð&àˆFð Ø×ÒÑÔÐÐÐøÝð ð ð ØˆDˆDð øøøs �3 ³
AÁ A)r9 r› r
r{ )r Úregisterr¢ rª s r( Úregister_cleanup_lock_removalr¬
sS € å
Œ)‰+Œ+€Cà*3Èð ð ¥4ð Å3ð ÐQUð ð ð ð ð ˆ8�OÑ$Ô$Ð$r* c ó — t | ¦ « } d} t | ¦ « }| j }| dt j ¦ « › �¦ « }| |¦ « t |¦ « n;# t $ r. Y |�( | ¦ « dS # t $ r Y dS w xY wdS w xY w |�( | ¦ « dS # t $ r Y dS w xY wdS # |�& | ¦ « w # t $ r Y w w xY ww xY w)z^Remove a numbered directory if its lock can be obtained and it does
not seem to be in use.Nzgarbage-)
r[ r¥ rR r. ÚuuidÚuuid4Úrenamerh r‚ rJ )r+ r rR Úgarbages r( Úmaybe_delete_a_numbered_dirr² sy € õ ' tÑ,Ô,€DØ€IðÝ'¨Ñ-Ô-ˆ Ø”ˆà—/’/Ð";T¬Z©\¬\Ð";Ð";Ñ<Ô<ˆØ�Š�GÑÔÐÝ
ˆg‰ŒˆˆøÝð ð ð ð
ð Ð ð
Ø× Ò Ñ"Ô"Ð"Ð"Ð"øÝð
ð
ð
Ø��ð
øøøð !Ð ðøøøð ð Ð ð
Ø× Ò Ñ"Ô"Ð"Ð"Ð"øÝð
ð
ð
Ø��ð
øøøð !Ð øˆ9Ð ð
Ø× Ò Ñ"Ô"Ð"Ð"øÝð
ð
ð
Ø�ð
øøøð !øøøsr “A#A7 Á6C Á7
B/ÂC ÂB Â
B)Â(B)Â.B/Â/C Â6C Ã
CÃCÃD Ã#C8Ã7D Ã8
DÄD ÄDÄD Ú$consider_lock_dead_if_created_beforec ó’ — | ¦ « rdS t | ¦ « } | ¦ « sdS n# t $ r Y dS w xY w | ¦ « j }||k rGt
j t ¦ « 5 | ¦ « ddd¦ « dS # 1 swxY w Y dS # t $ r Y dS w xY w)zGCheck if `path` is deletable based on whether the lock file is expired.FTN)
Ú
is_symlinkr0 rN r‚ r: Úst_mtimeÚ
contextlibÚsuppressrJ r„ )r+ r³ ÚlockÚ lock_times r( Úensure_deletabler» 7 s4 € à‡‚ÑÔð ØˆuݘÑÔ€DðØ�|Š|‰~Œ~ð Ø�4ð øåð ð ð ð ˆuˆuðøøøð
Ø—I’I‘K”KÔ(ˆ ð Ð;Ò;Ð;õ
Ô$¥WÑ-Ô-ð
ð
Ø—’‘
”
�
Øð
ð
ð
ñ
ô
ð
ð
ð
ð
ð
ð
ð
øøøð
ð
ð
ð
ð ˆuøõ ð ð ð Øˆuˆuðøøøs3 §> ¾
AÁAÁB8 ÂB+Â+B/Â2B/Â8
CÃCc óH — t | |¦ « rt | ¦ « dS dS )z8Try to cleanup a folder if we can ensure it's deletable.N)r» r² )r+ r³ s r( Útry_cleanupr½ S s3 € å˜ÐBÑCÔCð *Ý# DÑ)Ô)Ð)Ð)Ð)ð*ð *r* Úkeepc # óL K — t t t t | |¦ « ¦ « d¬¦ « }||z
}t | |¦ « }t j |¦ « \ }}t t t ||¦ « ¦ « }t ||¦ « D ]\ }} | |k r|V — ŒdS )zIList candidates for numbered directories to be removed - follows py.path.rz rŠ N) r� r� r~ rx rq Ú itertoolsÚteerv Úzip)
ri rj r¾ r“ Ú
max_deleteÚpathsÚpaths2Únumbersr+ Únumbers
r( Úcleanup_candidatesrÈ Y s® è è € å•s�9¥m°D¸&Ñ&AÔ&AÑBÔBÈBÐOÑOÔO€LØ Ñ$€Jݘ$ Ñ'Ô'€EÝ”M %Ñ(Ô(�M€Eˆ6Ý•)Õ-¨f°fÑ=Ô=Ñ>Ô>€GݘE 7Ñ+Ô+ð 𠉈ˆfØ�ZÒÐØˆJˆJˆJøðð r* c óÐ — | ¦ « D ]P}| ¦ « r:| ¦ « ¦ « s| ¦ « ŒQd S r8 )rm rµ rY ÚexistsrJ )ri Úleft_dirs r( Úcleanup_dead_symlinksrÌ e sh € Ø—L’L‘N”Nð "ð "ˆØ×ÒÑ Ô ð "Ø×#Ò#Ñ%Ô%×,Ò,Ñ.Ô.ð
"Ø—’Ñ!Ô!Ð!øð"ð "r* c óè — | ¦ « sdS t | ||¦ « D ]}t ||¦ « Œ| d¦ « D ]}t ||¦ « Œt | ¦ « dS )z-Cleanup for lock driven numbered directories.Nz garbage-*)rÊ rÈ r½ ÚglobrÌ )ri rj r¾ r³ r+ s r( Úcleanup_numbered_dirrÏ l s� € ð �;Š;‰=Œ=ð ØˆÝ" 4¨°Ñ6Ô6ð @ð @ˆÝ�DÐ>Ñ?Ô?Ð?Ð?Ø— ’ ˜+Ñ&Ô&ð