§
    ¨MºfÁ  ã                   óÀ  — d dl Z ddlmZ  G d„ d¦  «        Z	 d dlmZmZmZmZm	Z	 d dl
mZ d dlmZmZmZ d dlZd	Zn# e$ r eZeZeZ	eZeZeZeZeZeZd
ZY nw xY wd„ Ze j        j        d„ ¦   «         Z e j        d	d	¬¦  «        d„ ¦   «         Ze j        defd„¦   «         Ze j        defd„¦   «         Ze j        de	fd„¦   «         Ze j        defd„¦   «         Ze j        defd„¦   «         Ze j        defd„¦   «         Ze j        defd„¦   «         Z e j        defd„¦   «         Z!e j        defd„¦   «         Z"e j        defd„¦   «         Z#e j        d„ ¦   «         Z$dS )é    Né   )ÚSELENIUM_GRID_DEFAULTc                   ó   — e Zd Zd„ ZdS )ÚMissingDashTestingc                 ó    — t          d¦  «        ‚)NzQdash[testing] was not installed. Please install to use the dash testing fixtures.)Ú	Exception)ÚselfÚkwargss     úR/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/dash/testing/plugin.pyÚ__init__zMissingDashTesting.__init__   s   € Ýð?ñ
ô 
ð 	
ó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r      s#   € € € € € ð
ð 
ð 
ð 
ð 
r   r   )ÚThreadedRunnerÚProcessRunnerÚRRunnerÚJuliaRunnerÚMultiProcessRunner)ÚBrowser)ÚDashCompositeÚDashRCompositeÚDashJuliaCompositeTFc                 ó¤  — t           sd S |                      dd¦  «        }|                     dddd¬¦  «         |                     dd	d
¬¦  «         |                     ddt          d¬¦  «         |                     dd	d¬¦  «         |                     dddd¬¦  «         |                     ddd¬¦  «         |                     dd	d¬¦  «         d S )NÚDashzDash Integration Testsz--webdriver)ÚChromeÚFirefoxr   z"Name of the selenium driver to use)ÚchoicesÚdefaultÚhelpz--remoteÚ
store_truez$instruct pytest to use selenium grid)Úactionr!   z--remote-urlÚstorez>set a different selenium grid remote url if other than default)r#   r    r!   z
--headlessz%set this flag to run in headless modez--percy-assetsztests/assetsz3configure how Percy will discover your app's assetsz--nopercyfinalizeÚstore_falsez3set this flag to control percy finalize at CI levelz--pausezGpause using pdb after opening the test app, so you can interact with it)Ú
_installedÚgetgroupÚ	addoptionr   )ÚparserÚdashs     r   Úpytest_addoptionr+   ,   s<  € Ýð Øˆà�?Š?˜6Ð#;Ñ<Ô<€Dà‡N‚NØØ%ØØ1ð	 ñ ô ð ð 	‡N‚NØ˜<Ð.Tð ñ ô ð ð 	‡N‚NØØÝ%ØMð	 ñ ô ð ð 	‡N‚NØ˜\Ð0Wð ñ ô ð ð 	‡N‚NØØØØBð	 ñ ô ð ð 	‡N‚NØØØBð ñ ô ð ð 	‡N‚NØØØVð ñ ô ð ð ð r   c                 ón   — t           sd S ddlm} t          | dd ¦  «        }|€| j        } ||¦  «         d S )Nr   )ÚnewhooksÚadd_hookspecs)r&   Údash.testingr-   ÚgetattrÚaddhooks)Úpluginmanagerr-   Úmethods      r   Úpytest_addhooksr4   \   sW   € åð Øˆð &Ð%Ð%Ð%Ð%Ð%å�] O°TÑ:Ô:€FØ€~ØÔ'ˆØ
€Fˆ8ÑÔÐÐÐr   )ÚtryfirstÚhookwrapperc              #   ód  K  — d V —}t           sd S |                     ¦   «         }|j        dk    r{|j        rvt	          | d¦  «        rh| j                             ¦   «         D ]P\  }}	 |dv r|                     | j        ¦  «         Œ%# t          $ r}t          |¦  «         Y d }~ŒCd }~ww xY wd S d S d S d S )NÚcallÚfuncargs>   ÚdashrÚdashjlÚdash_brÚdash_duo)r&   Ú
get_resultÚwhenÚfailedÚhasattrr9   ÚitemsÚtake_snapshotÚnamer   Úprint)Úitemr8   ÚoutcomeÚreprD   ÚfixtureÚes          r   Úpytest_runtest_makereportrK   j   sï   è è € ð ˆeˆe€GÝð ØˆØ
×
Ò
Ñ
Ô
€Cð „x�6ÒÐ˜cœjÐ­W°T¸:Ñ-FÔ-FÐØ!œ]×0Ò0Ñ2Ô2ð 	ð 	‰MˆD�'ðØÐEÐEÐEØ×)Ò)¨$¬)Ñ4Ô4Ð4øøÝð ð ð Ý�a‘”������øøøøðøøøð ÐÐÐÐÐð	ð 	s   Á%BÂ
B'ÂB"Â"B'Úreturnc               #   ó`   K  — t          ¦   «         5 } | V — ddd¦  «         dS # 1 swxY w Y   dS )z*Start a local dash server in a new thread.N)r   ©Ústarters    r   Údash_thread_serverrP   �   s~   è è € õ 
Ñ	Ô	ð ˜WØˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ó   ‘#£'ª'c               #   ó`   K  — t          ¦   «         5 } | V — ddd¦  «         dS # 1 swxY w Y   dS )z=Start a Dash server with subprocess.Popen and waitress-serve.N)r   rN   s    r   Údash_process_serverrS   ˆ   s|   è è € õ 
‰Œð ˜GØˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð rQ   c               #   ó`   K  — t          ¦   «         5 } | V — d d d ¦  «         d S # 1 swxY w Y   d S ©N)r   rN   s    r   Údash_multi_process_serverrV   �   s|   è è € å	Ñ	Ô	ð  Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð rQ   c               #   ó`   K  — t          ¦   «         5 } | V — d d d ¦  «         d S # 1 swxY w Y   d S rU   )r   rN   s    r   Údashr_serverrX   •   sz   è è € å	‰Œð �gØˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð rQ   c               #   ó`   K  — t          ¦   «         5 } | V — d d d ¦  «         d S # 1 swxY w Y   d S rU   )r   rN   s    r   Údashjl_serverrZ   ›   sz   è è € å	‰Œð ˜'Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð rQ   c              #   ó,  K  — t          | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j        j                             ¦   «         |                     d¦  «        j        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        ¬	¦	  «	        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S ©
NÚ	webdriverÚremoteÚ
remote_urlÚheadlessÚdownloadÚpercy_assetsÚnopercyfinalizeÚpause)	Úbrowserr^   r_   r`   ÚoptionsÚdownload_pathÚpercy_assets_rootÚpercy_finalizerd   )r   ÚconfigÚ	getoptionÚhookÚpytest_setup_optionsÚmkdirÚstrpath)ÚrequestÚtmpdirre   s      r   r<   r<   ¡   s4  è è € å	Ø”×(Ò(¨Ñ5Ô5ØŒ~×'Ò'¨Ñ1Ô1Ø”>×+Ò+¨LÑ9Ô9Ø”×)Ò)¨*Ñ5Ô5Ø”Ô#×8Ò8Ñ:Ô:Ø—l’l :Ñ.Ô.Ô6Ø!œ.×2Ò2°>ÑBÔBØ”~×/Ò/Ð0AÑBÔBØŒn×&Ò& wÑ/Ô/ð

ñ 

ô 

ð ð 
Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Ã7D	Ä	DÄDc              #   ó.  K  — t          || j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j        j                             ¦   «         |                     d¦  «        j        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        ¬	¦
  «
        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S r\   ©r   rj   rk   rl   rm   rn   ro   )rp   rP   rq   Údcs       r   r=   r=   ±   s7  è è € å	ØØ”×(Ò(¨Ñ5Ô5ØŒ~×'Ò'¨Ñ1Ô1Ø”>×+Ò+¨LÑ9Ô9Ø”×)Ò)¨*Ñ5Ô5Ø”Ô#×8Ò8Ñ:Ô:Ø—l’l :Ñ.Ô.Ô6Ø!œ.×2Ò2°>ÑBÔBØ”~×/Ò/Ð0AÑBÔBØŒn×&Ò& wÑ/Ô/ð
ñ 
ô 
ð ð 
Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ó   Ã8D
Ä
DÄDc              #   ó.  K  — t          || j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j        j                             ¦   «         |                     d¦  «        j        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        ¬	¦
  «
        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S r\   rs   )rp   rV   rq   rt   s       r   Údash_duo_mprw   Â   s7  è è € å	Ø!Ø”×(Ò(¨Ñ5Ô5ØŒ~×'Ò'¨Ñ1Ô1Ø”>×+Ò+¨LÑ9Ô9Ø”×)Ò)¨*Ñ5Ô5Ø”Ô#×8Ò8Ñ:Ô:Ø—l’l :Ñ.Ô.Ô6Ø!œ.×2Ò2°>ÑBÔBØ”~×/Ò/Ð0AÑBÔBØŒn×&Ò& wÑ/Ô/ð
ñ 
ô 
ð ð 
Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ru   c              #   ó.  K  — t          || j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j        j                             ¦   «         |                     d¦  «        j        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        ¬	¦
  «
        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S r\   )r   rj   rk   rl   rm   rn   ro   )rp   rX   rq   rt   s       r   r:   r:   Ó   s7  è è € å	ØØ”×(Ò(¨Ñ5Ô5ØŒ~×'Ò'¨Ñ1Ô1Ø”>×+Ò+¨LÑ9Ô9Ø”×)Ò)¨*Ñ5Ô5Ø”Ô#×8Ò8Ñ:Ô:Ø—l’l :Ñ.Ô.Ô6Ø!œ.×2Ò2°>ÑBÔBØ”~×/Ò/Ð0AÑBÔBØŒn×&Ò& wÑ/Ô/ð
ñ 
ô 
ð ð 
Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ru   c              #   ó.  K  — t          || j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        | j        j                             ¦   «         |                     d¦  «        j        | j                             d¦  «        | j                             d¦  «        | j                             d¦  «        ¬	¦
  «
        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S r\   )r   rj   rk   rl   rm   rn   ro   )rp   rZ   rq   rt   s       r   r;   r;   ä   s7  è è € å	ØØ”×(Ò(¨Ñ5Ô5ØŒ~×'Ò'¨Ñ1Ô1Ø”>×+Ò+¨LÑ9Ô9Ø”×)Ò)¨*Ñ5Ô5Ø”Ô#×8Ò8Ñ:Ô:Ø—l’l :Ñ.Ô.Ô6Ø!œ.×2Ò2°>ÑBÔBØ”~×/Ò/Ð0AÑBÔBØŒn×&Ò& wÑ/Ô/ð
ñ 
ô 
ð ð 
Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ru   c                  ó"   — ddl m}   | ¦   «         S )Nr   ©ÚDiskcacheLongCallbackManager)Údash.long_callbackr|   r{   s    r   Údiskcache_managerr~   õ   s1   € ðð ð ð ð ð ð (Ð'Ñ)Ô)Ð)r   )%ÚpytestÚconstsr   r   Ú dash.testing.application_runnersr   r   r   r   r   Údash.testing.browserr   Údash.testing.compositer   r   r   Údash_testing_stubr&   ÚImportErrorr+   Úmarkr5   r4   ÚhookimplrK   rI   rP   rS   rV   rX   rZ   r<   r=   rw   r:   r;   r~   r   r   r   ú<module>rˆ      sN  ðà €€€Ø )Ð )Ð )Ð )Ð )Ð )ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ððð ð ð ð ð ð ð ð ð ð ð ð ð ð -Ð,Ð,Ð,Ð,Ð,ØXÐXÐXÐXÐXÐXÐXÐXÐXÐXð ÐÐÐà€J€JøØð ð ð à'€NØ&€MØ+ÐØ €GØ$€KØ €GØ&€MØ'€NØ+ÐØ€J€J€Jðøøøð-ð -ð -ð` „Ôð
ð 
ñ Ôð
ð €„˜$¨DÐ1Ñ1Ô1ðð ñ 2Ô1ðð, „ð˜Nð ð ð ñ „ðð „ð˜]ð ð ð ñ „ðð „ðÐ#5ð ð ð ñ „ðð
 „ð�gð ð ð ñ „ðð
 „ð�{ð ð ð ñ „ðð
 „ð ð ð ð ñ „ðð „ð°]ð ð ð ñ „ðð  „ð¸}ð ð ð ñ „ðð  „ð¨Nð ð ð ñ „ðð  „ðÐ.@ð ð ð ñ „ðð  „ð*ð *ñ „ð*ð *ð *s   ™$> ¾AÁA