ó
    Ð]jÞC  ã                   ó
  • S r SSKrSSKJs  Jr  SSKrSSKrSSK	r	SSK
r
SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJr  SS	KJr  \(       a  SS
KJr  \	R0                  " S\	R2                  5      r\	R0                  " S\	R2                  5      rS rS rS r " S S\R>                  5      r S r!S r"\RF                  " SS9S 5       r$ " S S5      r% " S S5      r&\RN                  S 5       r(\RN                  S 5       r)S r*g)zCoverage plugin for pytest.é    N)ÚStringIO)ÚPath)ÚTYPE_CHECKINGé   )ÚCovDisabledWarning)ÚCovReportWarning)ÚPytestCovWarning)ÚCovControllerú2unclosed database in <sqlite3.Connection object atz8unclosed\ database\ in\ <sqlite3\.Connection\ object\ atc                 ó6  • / SQnSS/nS/nX!-   nU R                  SS5      nUS   nU/ UQSP;  a  S	U  S
U S3n[        R                  " U5      e[        U5      S:X  a  US 4$ US   nXb;   a  Xƒ;   a  Xh4$ Xa;  a  SU  S
U S3n[        R                  " U5      eU$ )N)ÚannotateÚhtmlÚxmlÚjsonÚmarkdownúmarkdown-appendÚlcovÚtermzterm-missingzskip-coveredÚ:r   r   Ú zinvalid choice: "z" (choose from "z")z%output specifier not supported for: ")ÚsplitÚargparseÚArgumentTypeErrorÚlen)	ÚargÚfile_choicesÚterm_choicesÚterm_modifier_choicesÚall_choicesÚvaluesÚreport_typeÚmsgÚreport_modifiers	            ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pytest_cov/plugin.pyÚvalidate_reportr%      sÚ   € Ú]€LØ˜NÐ+€LØ+Ð,ÐØÑ-€KØ�Y‰Y�s˜AÓ€FØ˜‘)€KØÐ,˜KÐ,¨Ð,Ó,Ø! # Ð&6°{°mÀ2ÐFˆÜ×(Ò(¨Ó-Ð-ä
ˆ6ƒ{�aÓØ˜DÐ Ð à˜Q‘i€OØÓ" Ó'OØÐ+Ð+àÓ&Ø5°c°UÐ:JÈ<È.ÐXZÐ[ˆÜ×(Ò(¨Ó-Ð-à€Mó    c                 óØ   •  [        U 5      nUS:”  a  [        R                  " S5      eU$ ! [         a4     [        U 5      n N6! [         a    [        R                  " S5      S ef = ff = f)Nz&An integer or float value is required.éd   z|Your desire for over-achievement is admirable but misplaced. The maximum value is 100. Perhaps write more integration tests?)ÚintÚ
ValueErrorÚfloatr   r   )Únum_strÚvalues     r$   Úvalidate_fail_underr.   3   s‚   € ðaÜ�G“ˆð ˆsƒ{Ü×(Ò(ð Kó
ð 	
ð €Løô ó að	aÜ˜'“NŠEøÜó 	aÜ×,Ò,Ð-UÓVÐ\`Ð`ð	aúðaús   ‚+ «
A)¶AÁ"A%Á%A)c                 ó>   • U S:w  a  [         R                  " S5      eU $ )NÚtestz#The only supported value is "test".)r   r   )r   s    r$   Úvalidate_contextr1   B   s    € Ø
ˆfƒ}Ü×(Ò(Ð)NÓOÐOØ€Jr&   c                   ó$   • \ rS rSrSS jrS rSrg)ÚStoreReportéH   Nc                 óÊ   ^• Uu  pVUTR                   U'   US;   a  Uc  STR                   U'   [        U4S jS 5       5      (       a  U R                  TR                   U5        g g )N)r   r   zcoverage.mdc              3   ó@   >#   • U  H  oTR                   ;   v •  M     g 7f©N)Ú
cov_report)Ú.0ÚxÚ	namespaces     €r$   Ú	<genexpr>Ú'StoreReport.__call__.<locals>.<genexpr>P   s   øé € ÐRÒ2Q¨Q�I×(Ñ(Ö(Ò2Qùs   ƒ)r8   ÚallÚ_validate_markdown_dest_files)ÚselfÚparserr;   r    Úoption_stringr!   Úfiles     `    r$   Ú__call__ÚStoreReport.__call__I   sh   ø€ Ø"ÑˆØ,0ˆ	×Ñ˜[Ñ)ð Ð9Ó9¸d¹lØ0=ˆI× Ñ  Ñ-ÜÔRÑ2QÓR×RÑRØ×.Ñ.¨y×/CÑ/CÀVÕLð Sr&   c                 ó\   • US   nUS   nX4:X  a  SU S3nUS-  nUR                  U5        g g )Nr   r   zEmarkdown and markdown-append options cannot point to the same file: 'z'.zR Please redirect one of them using :DEST (e.g. --cov-report=markdown:dest_file.md))Úerror)r@   Úcov_report_optionsrA   Úmarkdown_fileÚmarkdown_append_fileÚerror_messages         r$   r?   Ú)StoreReport._validate_markdown_dest_filesS   sK   € Ø*¨:Ñ6ˆØ1Ð2CÑDÐØÓ0ØcÐdqÐcrÐrtÐuˆMØÐqÑqˆMØ�L‰L˜Õ'ð 1r&   © r7   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rD   r?   Ú__static_attributes__rM   r&   r$   r3   r3   H   s   † ôMõ(r&   r3   c                 óð  • U R                  SS5      nUR                  SS/ SSSSS	S
9  UR                  SS/ SSS9  UR                  S[        0 S[        SS9  UR                  SSSSSS9  UR                  SSSSS9  UR                  SSSSS9  UR                  S SS![        S"S#9  UR                  S$SSS%S9  UR                  S&SS'S(S9  UR                  S)[
        S'S*S+9  UR                  S,SS-[        S.S#9  g')/z Add options to control coverage.Úcovz3coverage reporting with distributed testing supportú--covÚappendÚSOURCEÚ?TÚ
cov_sourcez‚Path or package name to measure during execution (multi-allowed). Use --cov= to not do any source filtering and record everything.)ÚactionÚdefaultÚmetavarÚnargsÚconstÚdestÚhelpz--cov-resetÚstore_constz1Reset cov sources accumulated in options so far. )rZ   r^   r_   r`   z--cov-reportÚTYPEac  Type of report to generate: term, term-missing, annotate, html, xml, json, markdown, markdown-append, lcov (multi-allowed). term, term-missing may be followed by ":skip-covered". annotate, html, xml, json, markdown, markdown-append and lcov may be followed by ":DEST" where DEST specifies the output location. Use --cov-report= to not generate any output.)rZ   r[   r\   Útyper`   z--cov-configÚstorez.coveragercÚPATHz.Config file for coverage. Default: .coveragerc)rZ   r[   r\   r`   z--no-cov-on-failÚ
store_trueFz8Do not report coverage if test run fails. Default: False)rZ   r[   r`   ú--no-covzIDisable coverage report completely (useful for debuggers). Default: Falsez--cov-fail-underÚMINz,Fail if the total coverage is less than MIN.)rZ   r\   rc   r`   z--cov-appendz<Do not delete coverage but append to current. Default: Falsez--cov-branchNzEnable branch coverage.z--cov-precisionz!Override the reporting precision.)rc   r[   r`   z--cov-contextÚCONTEXTz(Dynamic contexts to use. "test" for now.)ÚgetgroupÚ	addoptionr3   r%   r.   r)   r1   )rA   Úgroups     r$   Úpytest_addoptionrm   \   s‹  € ð �O‰O˜EÐ#XÓY€EØ	‡O�OØØØØØØØðKð ñ 
ð 
‡O�OØØØØØ@ð ñ ð 
‡O�OØÜØØÜð8ð ñ ð 
‡O�OØØØØØ=ð ñ ð 
‡O�OØØØØGð	 ñ ð 
‡O�OØØØØXð	 ñ ð 
‡O�OØØØÜ Ø;ð ñ ð 
‡O�OØØØØKð	 ñ ð 
‡O�OØØØØ&ð	 ñ ð 
‡O�OØÜØØ0ð	 ñ ð 
‡O�OØØØÜØ7ð ò r&   c                 óN   • SU ;   a  S$ U  Vs/ s H  oSLd  M	  UPM     sn$ s  snf )z›
Prepare cov_source so that:

 --cov --cov=foobar is equivalent to --cov (cov_source=None)
 --cov=foo --cov=bar is equivalent to cov_source=['foo', 'bar']
TNrM   )rY   Úpaths     r$   Ú_prepare_cov_sourcerp   ´   s.   € ð ˜:Ó%ˆ4Ð\¹ZÓ+\ºZ°TÐW[ÐK[¯D¹ZÑ+\Ð\ùÒ+\s   �"™"T)Útryfirstc                 óR  • U R                   nS=oCl        U H@  n[        U5      nUS:X  a  SnM  UR                  S5      (       d  M0  U(       d  M9  SUl          O   U R                   R                  (       a2  [        X0R                  5      nU R                  R                  US5        g g )NFrg   TrU   Ú_cov)Úknown_args_namespaceÚno_cov_should_warnÚstrÚ
startswithrY   Ú	CovPluginÚpluginmanagerÚregister)Úearly_configrA   ÚargsÚoptionsÚno_covr   Úplugins          r$   Úpytest_load_initial_conftestsr€   ¾   s’   € à×/Ñ/€GØ*/Ð/€FÔ'ÛˆÜ�#‹hˆØ�*ÓØŠFØ�^‰^˜G×$Ó$¯¨Ø)-ˆGÔ&Ùñ ð ×(Ñ(×3×3Ü˜7×$>Ñ$>Ó?ˆØ×"Ñ"×+Ñ+¨F°FÕ;ð 4r&   c                   ó$  • \ rS rSrSrSS\R                  4S jjrSS\S   4S	 jjr	S
 r
S r\R                  " SS9S 5       r\R                  " SS9S 5       rS r\R                  " SS9S 5       rS rS r\R                  " SS9S 5       rSrg)rx   éÏ   zËUse coverage package to produce code coverage reports.

Delegates all work to a particular implementation based on whether
this test process is centralised, a distributed master or a
distributed worker.
Tr}   c                 ó<  • SU l         SU l        [        5       U l        SU l        SU l        SU l        SU l        SU l        Xl	        SU l
        [        USS5      =(       d$    [        USS5      =(       d    [        USS5      S:g  n[        USS5      (       a  SU l        gU R                  R                  (       d  S	/U R                  l        ON[        U R                  R                  5      S
:X  a+  SU R                  R                  ;   a  0 U R                  l        [        U R                  R                  5      U R                  l        S
SKJn  U(       a#  U(       a  U R#                  UR$                  5        gU(       a  U R#                  UR&                  5        gg)z±Creates a coverage pytest plugin.

We read the rc file that coverage uses to get the data file
name.  This is needed since we give coverage through it's API
the data file name.
NFÚnumprocessesÚdistloadÚdistÚnor~   Tr   r   r   ©Úengine)ÚpidÚcov_controllerr   r8   Ú	cov_totalÚfailedÚ_startedÚ_start_pathÚ	_disabledr}   Ú_wrote_headingÚgetattrr   rp   rY   r   r‰   ÚstartÚ
DistMasterÚCentral)r@   r}   ry   r“   ru   Úis_distr‰   s          r$   Ú__init__ÚCovPlugin.__init__×   sO  € ð ˆŒØ"ˆÔÜ"›*ˆŒØˆŒØˆŒØˆŒØˆÔØˆŒØŒØ#ˆÔä˜' >°5Ó9÷  K¼WÀWÈjÐZ_Ó=`÷  KÔdkÐlsÐu{ð  ~Bó  eCð  GKñ  eKˆÜ�7˜H e×,Ñ,Ø!ˆDŒNØà�|‰|×&×&Ø'- hˆD�L‰LÕ#Ü�—‘×(Ñ(Ó)¨QÓ.°2¸¿¹×9PÑ9PÓ3PØ&(ˆD�L‰LÔ#Ü"5°d·l±l×6MÑ6MÓ"Nˆ�‰Ôõ 	æ–uØ�J‰J�v×(Ñ(Õ)ÞØ�J‰J�v—~‘~Õ&ð r&   NÚcontroller_clsr
   c                 ó  ^ • Uc   " U 4S jS5      nU" 5       nU" T R                   X#5      T l        T R                  R                  5         ST l        [        R
                  " 5       T l        T R                  R                  R                  nT R                   R                  c,  [        US5      (       a  UR                  T R                   l	        T R                   R                  c  [        USS5      T R                   l        g g )Nc                   ó0   >• \ rS rSr Y R                  rSrg)ÚCovPlugin.start.<locals>.Configi  rM   N)rN   rO   rP   rQ   r}   ÚoptionrR   )r@   s   €r$   ÚConfigrœ     s   ø† ÙŸ™“r&   rž   TÚ
fail_underÚ	precisionr   )r}   r‹   r“   rŽ   r   Úcwdr�   rT   ÚconfigÚcov_fail_underÚhasattrrŸ   Úcov_precisionr’   )r@   r™   r¢   Únodeidrž   Ú
cov_configs   `     r$   r“   ÚCovPlugin.start  sÄ   ø€ Ø‰>÷&ô &ñ “XˆFá,¨T¯\©\¸6ÓJˆÔØ×Ñ×!Ñ!Ô#ØˆŒÜŸ8š8›:ˆÔØ×(Ñ(×,Ñ,×3Ñ3ˆ
Ø�<‰<×&Ñ&Ñ.´7¸:À|×3TÑ3TØ*4×*?Ñ*?ˆD�L‰LÔ'Ø�<‰<×%Ñ%Ñ-Ü)0°¸[È!Ó)LˆD�L‰LÕ&ð .r&   c                 ó4   • [        UR                  SS 5      S L$ )NÚworkerinput)r’   r¢   )r@   Úsessions     r$   Ú
_is_workerÚCovPlugin._is_worker  s   € Ü�w—~‘~ }°dÓ;À4ÐGÐGr&   c                 óf  • U R                   R                  (       a  SU l        gSSKJn  [
        R                  " 5       U l        U R                  U5      (       aX  UR                  R                  R                  SUR                  5      nU R                  UR                  UR                  U5        O,U R                  (       d  U R                  UR                   5        U R                   R"                  S:X  a:  UR                  R$                  R'                  [)        U R*                  5      S5        gg)zAAt session start determine our implementation and delegate to it.TNr   rˆ   Úworkeridr0   Ú_cov_contexts)r}   r~   r�   r   r‰   ÚosÚgetpidrŠ   r¬   r¢   rª   Úgetr¦   r“   Ú
DistWorkerrŽ   r•   Úcov_contextry   rz   ÚTestContextPluginr‹   )r@   r«   r‰   r¦   s       r$   Úpytest_sessionstartÚCovPlugin.pytest_sessionstart  sË   € ð �<‰<××à!ˆDŒNØõ 	ä—9’9“;ˆŒØ�?‰?˜7×#Ñ#Ø—^‘^×/Ñ/×3Ñ3°JÀÇÁÓOˆFØ�J‰J�v×(Ñ(¨'¯.©.¸&ÕAØ——Ø�J‰J�v—~‘~Ô&à�<‰<×#Ñ# vÓ-Ø�N‰N×(Ñ(×1Ñ1Ô2CÀD×DWÑDWÓ2XÐZiÕjð .r&   )Úoptionalhookc                 ó^   • U R                   (       d  U R                  R                  U5        gg©z\Delegate to our implementation.

Mark this hook as optional in case xdist is not installed.
N)r�   r‹   Úconfigure_node)r@   Únodes     r$   Úpytest_configure_nodeÚCovPlugin.pytest_configure_node,  s$   € ð �~�~Ø×Ñ×.Ñ.¨tÕ4ð r&   c                 ó^   • U R                   (       d  U R                  R                  X5        ggr»   )r�   r‹   Útestnodedown)r@   r½   rG   s      r$   Úpytest_testnodedownÚCovPlugin.pytest_testnodedown5  s$   € ð �~�~Ø×Ñ×,Ñ,¨TÕ9ð r&   c                 óÖ   • U R                   R                  =(       d    U R                   R                  nU=(       a.    U R                  =(       a    U R                   R                  (       + $ r7   )r}   r8   r£   r�   Úno_cov_on_fail)r@   Úneededs     r$   Ú_should_reportÚCovPlugin._should_report>  sA   € Ø—‘×(Ñ(×G¨D¯L©L×,GÑ,GˆØ×K˜tŸ{™{×J¨t¯|©|×/JÑ/JÔKÐKr&   )Úwrapperc              #   ó°  #   • U R                   (       a  S v •$ [        R                   H%  u  p#n  nU[        L d  M  U[        [
        4;   d  M%    O   [        R                  " SS[        5        [        R                   H  u    p$  nU[        L d  M    O   [        R                  " S[        5        SSK	J
n  [        R                   H  u    p$  nXEL d  M    O   [        R                  " SU5        S v •n[        UR                  5      U l        U R                  b  U R                  R                  5         U R!                  U5      (       Gd  U R#                  5       (       Gaý  SSKJn  SSKJn  SSKJn	   U R                  R/                  U R0                  5      U l        U R2                  nS oËULoÝ(       dÑ  [@        RB                  " SU4SX¼45      S[D        RF                  " 5       ;   d  [@        RH                  " U 5      (       a  [@        RJ                  " U 5      OS[@        RJ                  " U5      [@        RJ                  " U5      S.-  n[@        RL                  " S5      S-   SU0-  n[O        [@        RP                  " U5      5      eS =n=pÜU RR                  RT                  nU RR                  RV                  nUb  U RR                  RX                  (       a  g U	" U R2                  UU5      (       ao  SR[                  U" U R2                  U5      UUS9nUR4                  R6                  R9                  S5      R;                  SU S
3SSS9  U=R                  S-  sl        U$ ! U an  n
S	U
 S
3nUR4                  R6                  R9                  S5      R;                  SU S
3SSS9  [        R<                  " [?        U5      SS9  SU l         S n
A
GN1S n
A
ff = f7f)Nr[   r   Úoncer   )ÚCoverageWarning)ÚCoverageException)Údisplay_covered)Úshould_fail_underzFailed to generate report: Ú
Úterminalreporterz

WARNING: T©ÚredÚboldr   ©Ú
stacklevel)úis not)z5%(py2)s
{%(py2)s = %(py0)s.cov_total
} is not %(py5)sr@   )Úpy0Úpy2Úpy5z$Test coverage should never be `None`z
>assert %(py7)sÚpy7zMCoverage failure: total of {total} is less than fail-under={fail_under:.{p}f})ÚtotalrŸ   Úpz
ERROR: ).r�   ÚwarningsÚfiltersÚResourceWarningÚCOVERAGE_SQLITE_WARNING_REÚCOVERAGE_SQLITE_WARNING_RE2Úfilterwarningsr	   ÚsimplefilterÚcoverage.exceptionsrÌ   ÚboolÚtestsfailedr�   r‹   Úfinishr¬   rÇ   Úcoverage.miscrÍ   Úcoverage.resultsrÎ   rÏ   Úsummaryr8   rŒ   r¢   ry   Ú	getpluginÚwriteÚwarnr   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚ_format_assertmsgÚAssertionErrorÚ_format_explanationr}   r£   r¥   ÚcollectonlyÚformat)r@   r«   Ú_ÚmessageÚcategoryrÌ   ÚresultrÍ   rÎ   rÏ   ÚexcÚ@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8r£   r¥   s                     r$   Úpytest_runtestloopÚCovPlugin.pytest_runtestloopD  s  é € à�>�>ÚˆNô +3×*:Ô*:Ñ&ˆA˜ ! QØœ?Ô*¨wÔ;UÔWrÐ:sÕ/sÙñ +;ô ×#Ò# IÐ/cÔetÔuÜ$,×$4Ô$4Ñ ˆAˆq˜A˜qØÔ+Ô+Ùñ %5ô ×!Ò! &Ô*:Ô;Ý7ä$,×$4Ô$4Ñ ˆAˆq˜A˜qØÔ*Ùñ %5ô ×!Ò! &¨/Ô:âˆä˜7×.Ñ.Ó/ˆŒØ×ÑÑ*Ø×Ñ×&Ñ&Ô(à�‰˜w×'Ò'¨D×,?Ñ,?×,AÒ,Aõ 8Ý8Ý:ð#Ø!%×!4Ñ!4×!<Ñ!<¸T¿_¹_Ó!M�”ð —>‘>ÐU¨ÐU¨Ð-×U×U×UÒU�>×U×U×U×U×UÕU�4×U×U×UÑU�4×U×UÕU�>×U×UÓU¨×U×U×UÐUÐ/U×U×U×U×U×U×UÐUØ!Ÿ\™\×8Ñ8ˆNØ ŸL™L×6Ñ6ˆMØÑ%¨¯©×)A×)AØÙ  §¡°À×OÑOØi×pÑpÙ)¨$¯.©.¸-ÓHØ-Ø#ð qð �ð
 —‘×,Ñ,×6Ñ6Ð7IÓJ×PÑPÐS\Ð]dÐ\eÐegÐQhÐnrÐy}ÐPÑ~à×#Ò# qÑ(Õ#àˆøð) %ó #Ø7¸°u¸BÐ?�Ø—‘×,Ñ,×6Ñ6Ð7IÓJ×PÑPÐS^Ð_fÐ^gÐgiÐQjÐptÐ{ÐPñ  AÜ—’Ô.¨wÓ7ÀAÒFØ!"�—’ûð	#üsI   ‚5O»OÁ?OÂ?OÃBOÅ3*M ÆGOÍOÍ%A#OÏOÏOÏOc                 óZ   • U R                   (       d  UR                  SS5        SU l         g g )NÚ=ztests coverageT)r‘   Ú	write_sep)r@   rÑ   s     r$   Úwrite_headingÚCovPlugin.write_heading�  s)   € Ø×"×"Ø×&Ñ& sÐ,<Ô=Ø"&ˆDÕð #r&   c                 ó@  • U R                   (       ab  U R                  R                  (       aF  U R                  U5        SnUR	                  SU S3SSS9  [
        R                  " [        U5      SS9  g U R                  c  g U R                  c  g U R                  R                  5       nU(       a"  U R                  U5        UR	                  U5        U R                  R                  bµ  U R                  R                  S:”  aš  U R                  U5        U R                  U R                  R                  :  nU(       a  SSS.OS	S0nS
R                  U R                  R                  U R                  U(       a  SOSU(       a  SOSS9nUR                  " U40 UD6  g g g )Nz&Coverage disabled via --no-cov switch!z	WARNING: rÐ   TrÒ   r   rÕ   r   ÚgreenzU{fail}Required test coverage of {required}% {reached}. Total coverage: {actual:.2f}%
zFAIL r   znot reachedÚreached)ÚrequiredÚactualÚfailr  )r�   r}   ru   r	  rí   rÞ   rî   r   r‹   rŒ   r8   Úgetvaluer£   rù   )r@   rÑ   rû   Úreportr�   Úmarkups         r$   Úpytest_terminal_summaryÚ!CovPlugin.pytest_terminal_summary†  s^  € Ø�>�>Ø�|‰|×.×.Ø×"Ñ"Ð#3Ô4ØB�Ø ×&Ñ&¨°7°)¸2Ð'>ÀDÈtÐ&ÑTÜ—’Ô0°Ó9ÀaÒHØØ×ÑÑ&Øà�>‰>Ñ!àà—‘×)Ñ)Ó+ˆæØ×ÑÐ/Ô0Ø×"Ñ" 6Ô*à�<‰<×&Ñ&Ñ2°t·|±|×7RÑ7RÐUVÓ7VØ×ÑÐ/Ô0Ø—^‘^ d§l¡l×&AÑ&AÑAˆFÞ4:˜T¨4Ò0ÀÈ$ÀˆFØn×uÑuØŸ™×4Ñ4Ø—~‘~Þ &‘W¨BÞ)/™°Yð	 vð ˆGð ×"Ò" 7Ñ5¨fÓ5ð 8WÐ2r&   )Úhookwrapperc              #   óÔ   #   • UR                  S5      (       d  S[        USS5      ;   a9  U R                  R                  5         S v •  U R                  R	                  5         g S v •  g 7f)NÚno_coverÚfixturenamesrM   )Úget_closest_markerr’   r‹   ÚpauseÚresume©r@   Úitems     r$   Úpytest_runtest_callÚCovPlugin.pytest_runtest_call§  sQ   é € à×"Ñ" :×.Ñ.°*ÄÈÈnÐ^`Ó@aÓ2aØ×Ñ×%Ñ%Ô'ÛØ×Ñ×&Ñ&Õ(äùs   ‚A&A()
r�   r�   rŽ   r‘   r‹   r8   rŒ   r�   r}   rŠ   )TF)NN)rN   rO   rP   rQ   Ú__doc__r   Ú	Namespacer—   rc   r“   r¬   r·   ÚpytestÚhookimplr¾   rÂ   rÇ   r  r	  r  r  rR   rM   r&   r$   rx   rx   Ï   s¿   † ññ&' × 2Ñ 2õ &'ñTM D¨Ñ$9õ Mò$Hòkð, ‡_‚_ $Ñ'ñ5ó (ð5ð ‡_‚_ $Ñ'ñ:ó (ð:òLð ‡_‚_˜TÑ"ñ:ó #ð:òx'ò
6ðB ‡_‚_ Ñ&ñó 'ór&   rx   c                   ó>   • \ rS rSr% S\S'   S rS rS rS rS r	S	r
g
)r¶   i±  r
   r‹   c                 ó   • Xl         g r7   ©r‹   )r@   r‹   s     r$   r—   ÚTestContextPlugin.__init__´  s   € Ø,Õr&   c                 ó(   • U R                  US5        g )NÚsetup©Úswitch_contextr  s     r$   Úpytest_runtest_setupÚ&TestContextPlugin.pytest_runtest_setup·  s   € Ø×Ñ˜D 'Õ*r&   c                 ó(   • U R                  US5        g )NÚteardownr+  r  s     r$   Úpytest_runtest_teardownÚ)TestContextPlugin.pytest_runtest_teardownº  s   € Ø×Ñ˜D *Õ-r&   c                 ó(   • U R                  US5        g )NÚrunr+  r  s     r$   r  Ú%TestContextPlugin.pytest_runtest_call½  s   € Ø×Ñ˜D %Õ(r&   c                 ó¤   • U R                   R                  (       a5  U R                   R                  R                  UR                   SU 35        g g )NÚ|)r‹   ÚstartedrT   r,  r¦   )r@   r  Úwhens      r$   r,  Ú TestContextPlugin.switch_contextÀ  s?   € Ø×Ñ×&×&Ø×Ñ×#Ñ#×2Ñ2°d·k±k°]À!ÀDÀ6Ð3JÕKð 'r&   r'  N)rN   rO   rP   rQ   Ú__annotations__r—   r-  r1  r  r,  rR   rM   r&   r$   r¶   r¶   ±  s"   ‡ Ø#Ó#ò-ò+ò.ò)õLr&   r¶   c                  ó   • g)z%A pytest fixture to disable coverage.NrM   rM   r&   r$   r  r  Å  s   � r&   c                 óð   • U R                   R                  R                  S5      (       aL  U R                   R                  R                  S5      nUR                  (       a  UR                  R
                  $ g)zEA pytest fixture to provide access to the underlying coverage object.rs   N)r¢   ry   Ú	haspluginrì   r‹   rT   )Úrequestr   s     r$   rT   rT   Ê  sW   € ð
 ‡~�~×#Ñ#×-Ñ-¨f×5Ñ5Ø—‘×-Ñ-×7Ñ7¸Ó?ˆØ× × Ø×(Ñ(×,Ñ,Ð,Ør&   c                 ó(   • U R                  SS5        g )NÚmarkersz)no_cover: disable coverage for this test.)Úaddinivalue_line)r¢   s    r$   Úpytest_configurerC  Ö  s   € Ø
×Ñ˜IÐ'RÕSr&   )+r!  Úbuiltinsrñ   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterï   r   r±   ÚrerÞ   Úior   Úpathlibr   Útypingr   r#  r   r   r   r	   r‰   r
   ÚcompileÚIrá   râ   r%   r.   r1   ÚActionr3   rm   rp   r$  r€   rx   r¶   Úfixturer  rT   rC  rM   r&   r$   Ú<module>rP     sÿ   ðÙ !ç  „ ƒÛ 	Û 	Û Ý Ý Ý  ã å  Ý Ý æÝ%ð  ŸZšZÐ(\Ð^`×^bÑ^bÓcÐ Ø ŸjšjÐ)iÐkm×koÑkoÓpÐ òò2òô(�(—/‘/ô (ò(Uòp]ð ‡‚˜$Ññ<ó  ð<÷ _ñ _÷DLñ Lð( ‡�ñ0ó ð0ð ‡�ñó ðóTr&   