+
    ÄD©i{,  ã                  ób  € R t ^ RIHt ^ RIHt ^ RIt^ RIt^ RIHt ^ RI	t	^ RI
Ht ^ RIt^ RIHt ^ RIHt ^ RIHt ^R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI H!t! ^ RI H"t" ^ RI#H$t$ ^ RI%H&t& ^ RI'H(t( ^ RI)H*t* ]*]+],]-3,          ,          ! 4       t.]R0,          t/]]P`                   ! R R4      4       4       t1R R lt2R R lt3R  R! lt4]!! R"R#7      R$ R% l4       t5R& R' lt6]!R( R) l4       t7R* R+ lt8]! R,R,R-7      R. R/ l4       t9R# )1z>Support for providing temporary directories to test functions.)Úannotations)Ú	GeneratorN)ÚPath)Úrmtree)ÚAny)Úfinal)ÚLiteral)Úcleanup_dead_symlinks)ÚLOCK_TIMEOUT)Úmake_numbered_dir)Úmake_numbered_dir_with_cleanup)Úrm_rf)Úget_user_id)ÚConfig)ÚExitCode)Úhookimpl)ÚParser)Úcheck_ispytest)Úfixture)ÚFixtureRequest)ÚMonkeyPatch)ÚItem)Ú
TestReport)ÚStashKeyc                  ó¬   € ] tR t^(t$ RtR]R&   R]R&   R]R&   R]R&   R	]R
&   RRR/R R lllt]RR/R R ll4       tR R lt	RR R llt
R R ltRtR# )ÚTempPathFactoryz‹Factory for temporary directories under the common base temp directory,
as discussed at :ref:`temporary directory location and retention`.
úPath | NoneÚ_given_basetempr   Ú_traceÚ	_basetempÚintÚ_retention_countÚRetentionTypeÚ_retention_policyNÚ	_ispytestFc               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )é   Úgiven_basetempr   Úretention_countr    Úretention_policyr"   Úbasetempr$   ÚboolÚreturnÚNone© )Úformats   "Ú0/usr/lib/python3/dist-packages/_pytest/tmpdir.pyÚ__annotate__ÚTempPathFactory.__annotate__6   sF   € ÷ "ñ "à#ð"ð ð"ð (ð	"ð ð"ð ð"ð 
ñ"ó    c               	óÐ   € \        V4       Vf	   R V n        M6\        \        P                  P                  \        V4      4      4      V n        W@n        W n        W0n	        WPn
        R # ©N)r   r   r   ÚosÚpathÚabspathÚstrr   r!   r#   r   )Úselfr'   r(   r)   Útracer*   r$   s   &&&&&&$r0   Ú__init__ÚTempPathFactory.__init__6   sQ   € ô 	�yÔ!ØÒ!Ø#'ˆDÕ ô
 $(¬¯©¯©¼¸NÓ8KÓ(LÓ#MˆDÔ ØŒØ /ÔØ!1ÔØ!Žr3   c               ó$   € V ^8„  d   QhRRRRRR/# )r&   Úconfigr   r$   r+   r,   r   r.   )r/   s   "r0   r1   r2   N   s(   € ÷ 
ñ 
àð
ð ð	
ð
 
ñ
r3   c               ó:  € \        V4       \        VP                  R4      4      pV^ 8  d   \        RV R24      hVP                  R4      pVR	9  d   \        RV R24      hV ! VP                  P
                  VP                  P                  R4      VVRR7      # )
zDCreate a factory according to pytest configuration.

:meta private:
Útmp_path_retention_countz6tmp_path_retention_count must be >= 0. Current input: Ú.Útmp_path_retention_policyzKtmp_path_retention_policy must be either all, failed, none. Current input: ÚtmpdirT)r'   r;   r(   r)   r$   ©ÚallÚfailedÚnone)r   r    ÚgetiniÚ
ValueErrorÚoptionr*   r;   Úget)Úclsr?   r$   ÚcountÚpolicys   &&$  r0   Úfrom_configÚTempPathFactory.from_configM   s­   € ô 	�yÔ!Ü�F—M‘MÐ"<Ó=Ó>ˆØ�1Œ9ÜØHÈÈÈqÐQóð ð —‘Ð:Ó;ˆØÐ2Ô2ÜØ]Ð^dÐ]eÐefÐgóð ñ Ø!Ÿ=™=×1Ñ1Ø—,‘,×"Ñ" 8Ó,Ø!Ø#Øô
ð 	
r3   c               ó    € V ^8„  d   QhRRRR/# )r&   Úbasenamer9   r,   r.   )r/   s   "r0   r1   r2   m   s   € ÷ ñ °Sð ¸Sñ r3   c                	óä   € \         P                  P                  V4      pV P                  4       V,          P	                  4       P
                  V P                  4       8w  d   \        V R 24      hV# )z& is not a normalized and relative path)r6   r7   ÚnormpathÚgetbasetempÚresolveÚparentrJ   )r:   rS   s   &&r0   Ú_ensure_relative_to_basetempÚ,TempPathFactory._ensure_relative_to_basetempm   s\   € Ü—7‘7×#Ñ# HÓ-ˆØ×ÑÓ Õ)×2Ñ2Ó4×;Ñ;¸t×?OÑ?OÓ?QÔQÜ ˜zÐ)OÐPÓQÐQØˆr3   c               ó$   € V ^8„  d   QhRRRRRR/# )r&   rS   r9   Únumberedr+   r,   r   r.   )r/   s   "r0   r1   r2   s   s!   € ÷ ñ ˜sð ¨dð ¸dñ r3   c                óú   € V P                  V4      pV'       g4   V P                  4       P                  V4      pVP                  RR7       V# \	        V P                  4       VRR7      pV P                  RV4       V# )aÆ  Create a new temporary directory managed by the factory.

:param basename:
    Directory base name, must be a relative path.

:param numbered:
    If ``True``, ensure the directory is unique by adding a numbered
    suffix greater than any existing one: ``basename="foo-"`` and ``numbered=True``
    means that this function will create directories named ``"foo-0"``,
    ``"foo-1"``, ``"foo-2"`` and so on.

:returns:
    The path to the new directory.
éÀ  ©Úmode)ÚrootÚprefixr`   Úmktemp)rY   rV   ÚjoinpathÚmkdirr   r   )r:   rS   r\   Úps   &&& r0   rc   ÚTempPathFactory.mktemps   sr   € ð ×4Ñ4°XÓ>ˆßØ× Ñ Ó"×+Ñ+¨HÓ5ˆAØ�G‰G˜ˆGÔð ˆô " t×'7Ñ'7Ó'9À(ÐQVÔWˆAØ�K‰K˜ !Ô$Øˆr3   c               ó   € V ^8„  d   QhRR/# )r&   r,   r   r.   )r/   s   "r0   r1   r2   ‹   s   € ÷ 9ñ 9˜Tñ 9r3   c                ó,  € V P                   e   V P                   # V P                  eR   V P                  pVP                  4       '       d   \        V4       VP	                  RR7       VP                  4       pEMA\        P                  P                  R4      p\        T;'       g    \        P                  ! 4       4      P                  4       p\        4       ;'       g    RpVP                  RV 24      p VP	                  RRR7       \        4       pVep   VP!                  4       pVP"                  V8w  d   \        R	V R
24      hVP$                  ^?,          ^ 8w  d(   \        P&                  ! WWP$                  R,          4       V P(                  pV P*                  R8X  d   ^ p\-        RVV\.        RR7      pVf   Q V4       hWn         V P1                  RV4       V#   \         d)    TP                  R4      pTP	                  RRR7        ELi ; i)ziReturn the base temporary directory, creating it if needed.

:returns:
    The base temporary directory.
r^   r_   ÚPYTEST_DEBUG_TEMPROOTÚunknownz
pytest-of-T)r`   Úexist_okzpytest-of-unknownzThe temporary directory z: is not owned by the current user. Fix this and try again.rH   zpytest-)rb   ra   ÚkeepÚlock_timeoutr`   znew basetempiÀÿÿÿ)r   r   Úexistsr   re   rW   r6   ÚenvironrL   r   ÚtempfileÚ
gettempdirÚget_userrd   ÚOSErrorr   ÚstatÚst_uidÚst_modeÚchmodr!   r#   r   r
   r   )	r:   r*   Úfrom_envÚtemprootÚuserÚrootdirÚuidÚrootdir_statrm   s	   &        r0   rV   ÚTempPathFactory.getbasetemp‹   sÙ  € ð �>‰>Ò%Ø—>‘>Ð!à×ÑÒ+Ø×+Ñ+ˆHØ�‰× Ò Ü�h”Ø�N‰N ˆNÔ&Ø×'Ñ'Ó)ŠHä—z‘z—~‘~Ð&=Ó>ˆHÜ˜H×=Ð=¬×(;Ò(;Ó(=Ó>×FÑFÓHˆHÜ“:×*Ð* ˆDð ×'Ñ'¨*°T°FÐ(;Ó<ˆGð9Ø—‘ 5°4�Ô8ô “-ˆCØŠØ&Ÿ|™|›~�Ø×&Ñ&¨#Ô-Ü!Ø2°7°)ð <2ð 2óð ð !×(Ñ(¨5Õ0°QÔ6Ü—H’H˜W×&:Ñ&:¸VÕ&CÔDØ×(Ñ(ˆDØ×%Ñ%¨Ô/Ø�Ü5Ø ØØÜ)ØôˆHð Ò#Ð- XÓ-Ð#Ø!ŒØ�‰�N HÔ-ØˆøôC ô 9à"×+Ñ+Ð,?Ó@�Ø—‘ 5°4�×8ð9ús   Ã8G  Ç /HÈH)r   r   r!   r#   r   r5   )T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r<   ÚclassmethodrP   rY   rc   rV   Ú__static_attributes__r.   r3   r0   r   r   (   sl   ‡ ñð !Ó àƒKØÓØÓØ$Ó$ñ"ð  ÷"ð "ð. ð
ð  ö	
ó ð
õ>÷÷09ñ 9r3   r   c               ó   € V ^8„  d   QhRR/# )r&   r,   z
str | Noner.   )r/   s   "r0   r1   r1   Ç   s   € ÷ 	ñ 	�*ñ 	r3   c                 óf   €  ^ RI p V P                  4       #   \        \        \        3 d     R# i ; i)zhReturn the current user name, or None if getuser() does not work
in the current environment (see #1010).N)ÚgetpassÚgetuserÚImportErrorrt   ÚKeyError)rŠ   s    r0   rs   rs   Ç   s0   € ðãà�‰Ó Ð øÜœ¤(Ð+ô Úðús   ‚ –0¯0c               ó    € V ^8„  d   QhRRRR/# )r&   r?   r   r,   r-   r.   )r/   s   "r0   r1   r1   Ó   s   € ÷ 
Nñ 
N˜Vð 
N¨ñ 
Nr3   c                ó¨   € \        4       pV P                  VP                  4       \        P	                  V RR7      pVP                  V RVRR7       R# )z÷Create a TempPathFactory and attach it to the config object.

This is to comply with existing plugins which expect the handler to be
available at pytest_configure time, but ideally should be moved entirely
to the tmp_path_factory session fixture.
T)r$   Ú_tmp_path_factoryF)ÚraisingN)r   Úadd_cleanupÚundor   rP   Úsetattr)r?   Úmpr�   s   &  r0   Úpytest_configurer–   Ó   sI   € ô 
‹€BØ
×Ñ�r—w‘wÔÜ'×3Ñ3°FÀdÐ3ÓKÐØ‡J�JˆvÐ*Ð,=Àu€JÖMr3   c               ó    € V ^8„  d   QhRRRR/# )r&   Úparserr   r,   r-   r.   )r/   s   "r0   r1   r1   à   s   € ÷ ñ ˜Vð ¨ñ r3   c                óZ   € V P                  R RRRR7       V P                  RRRRR7       R	# )
rA   zfHow many sessions should we keep the `tmp_path` directories, according to `tmp_path_retention_policy`.Ú3Ústring)ÚhelpÚdefaultÚtyperC   zvControls which directories created by the `tmp_path` fixture are kept around, based on test outcome. (all/failed/none)rF   )rœ   rž   r�   N)Úaddini)r˜   s   &r0   Úpytest_addoptionr    à   s@   € Ø
‡M�MØ"ØuØàð ô ð ‡M�MØ#ðàØð ö r3   Úsession)Úscopec               ó    € V ^8„  d   QhRRRR/# )r&   Úrequestr   r,   r   r.   )r/   s   "r0   r1   r1   ó   s   € ÷ ,ñ ,˜nð ,°ñ ,r3   c                ó.   € V P                   P                  # )zGReturn a :class:`pytest.TempPathFactory` instance for the test session.)r?   r�   )r¤   s   &r0   Útmp_path_factoryr¦   ò   s   € ð �>‰>×+Ñ+Ð+r3   c               ó$   € V ^8„  d   QhRRRRRR/# )r&   r¤   r   Úfactoryr   r,   r   r.   )r/   s   "r0   r1   r1   ù   s!   € ÷ /ñ /�^ð /¨oð /À$ñ /r3   c                ó’   € V P                   P                  p\        P                  ! R RV4      p^pVRV pVP	                  VRR7      # )z[\W]Ú_NT)r\   )ÚnodeÚnameÚreÚsubrc   )r¤   r¨   r¬   ÚMAXVALs   &&  r0   Ú_mk_tmpr°   ù   sF   € Ø�<‰<×Ñ€DÜ�6Š6�'˜3 Ó%€DØ€FØ��ˆ=€DØ�>‰>˜$¨ˆ>Ó.Ð.r3   c               ó$   € V ^8„  d   QhRRRRRR/# )r&   r¤   r   r¦   r   r,   zGenerator[Path]r.   )r/   s   "r0   r1   r1     s$   € ÷ /ñ /Øð/Ø/>ð/àñ/r3   c              #  ó  "  € \        W4      pVx € VP                  pV P                  P                  \        ,          pVR8X  d&   VP                  RR4      '       d   \        VRR7       V P                  P                  \         R# 5i)a'  Return a temporary directory (as :class:`pathlib.Path` object)
which is unique to each test function invocation.
The temporary directory is created as a subdirectory
of the base temporary directory, with configurable retention,
as discussed in :ref:`temporary directory location and retention`.
rG   ÚcallT©Úignore_errorsN)r°   r#   r«   ÚstashÚtmppath_result_keyrL   r   )r¤   r¦   r7   rO   Úresult_dicts   &&   r0   Útmp_pathr¹     so   é € ô �7Ó-€DØ
‚Jð ×/Ñ/€FØ—,‘,×$Ñ$Ô%7Õ8€Kà�Ô˜kŸo™o¨f°d×;Ò;ô 	ˆt 4Õ(à�‰×ÑÔ-Ò.ùs   ‚ABÁ*Bc               ó   € V ^8„  d   QhRR/# )r&   Ú
exitstatuszint | ExitCoder.   )r/   s   "r0   r1   r1     s   € ÷ (ñ (¨nñ (r3   c                ó2  € V P                   P                  pVP                  pVf   R# VP                  pV^ 8X  d9   VR8X  d2   VP                  f$   VP                  4       '       d   \        VRR7       VP                  4       '       d   \        V4       R# R# )zˆAfter each session, remove base directory if all the tests passed,
the policy is "failed", and the basetemp is not specified by a user.
NrG   Tr´   )r?   r�   r   r#   r   Úis_dirr   r	   )r¡   r»   r¦   r*   rO   s   &&   r0   Úpytest_sessionfinishr¾     sƒ   € ð )0¯©×(HÑ(HÐØ×)Ñ)€HØÒÙà×/Ñ/€Fà�aŒØ�hÔØ×,Ñ,Ò4à�?‰?×Òô �8¨4Õ0ð ‡�×ÒÜ˜hÖ'ñ r3   T)ÚwrapperÚtryfirstc               ó    € V ^8„  d   QhRRRR/# )r&   Úitemr   r,   z'Generator[None, TestReport, TestReport]r.   )r/   s   "r0   r1   r1   4  s   € ÷ ñ Ø
ðà,ñr3   c              #  ó¨   "  € R x €pVP                   f   Q h/ pVP                  V P                  P                  \        V4      VP                   &   V# 5ir5   )ÚwhenÚpassedr¶   Ú
setdefaultr·   )rÂ   r³   ÚrepÚemptys   &&  r0   Úpytest_runtest_makereportrÉ   3  sJ   é € ò €CØ�8‰8ÒÐÐØ€EØADÇÁ€D‡J�J×ÑÔ,¨eÓ4°S·X±XÑ>Ø€Jùs   ‚AArE   ):r„   Ú
__future__r   Úcollections.abcr   Údataclassesr6   Úpathlibr   r­   Úshutilr   rq   Útypingr   r   r   r	   r
   r   r   r   Ú_pytest.compatr   Ú_pytest.configr   r   r   Ú_pytest.config.argparsingr   Ú_pytest.deprecatedr   Ú_pytest.fixturesr   r   Ú_pytest.monkeypatchr   Ú_pytest.nodesr   Ú_pytest.reportsr   Ú_pytest.stashr   Údictr9   r+   r·   r"   Ú	dataclassr   rs   r–   r    r¦   r°   r¹   r¾   rÉ   r.   r3   r0   Ú<module>rÛ      s  ðá Då "å %Û Û 	Ý Û 	Ý Û Ý Ý Ý å *Ý !Ý &Ý 3Ý Ý &Ý !Ý #Ý #Ý ,Ý -Ý $Ý +Ý +Ý Ý &Ý "ð ˜d 3¨ 9�oÖ.Ó0Ð ØÐ/Õ0€ð Ø×Ñ÷Zð Zó ó ðZõz	õ
Nõñ$ 	ˆyÔô,ó ð,õ/ð 	ô/ó 	ð/õ0(ñ2 
�$ Ô&ôó 'òr3   