
    E#i&                     d   S SK r S SKrS SKrS SKrS SKJrJr  S SKrS SKr\R                  R                  \R                  R                  \5      5      r\R                  R                  \R                  R                  \5      5      r\R                  R                  \5        S SKJr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr   " S	 S
\5      r\" 5       r \ RB                  " 5       r"\"RG                  SSSS9  \"RG                  SSSS9  \"RG                  SSSS9  \"RG                  SSSS9  \"RG                  SSSS9  \"RG                  SSSS9  \"RG                  SSSS9  \"RG                  SSSS9  \"RG                  SSSS9  \"RG                  SSSS9  \"RG                  S SSS9  \"RG                  S!SS"S9  \"RG                  S#SS"S9  \"RG                  S$SS%S9  \"RG                  S&SS'S9  \"RG                  S(SS)S9  \"RG                  S*\$S+S,S-9  \"RG                  S.\$S/S,S-9  \"RK                  \ S09  \R                  R                  \R                  5      r	S1\R                  R                  \R                  5      ;   a  \&" S25      e\&r'S3 r(\(\l)        S4r*S5r+\ RX                  r-S6r.\S7-   r/\R`                  r1S8r2S9r3S: r4\4" S5      r5S; r6S< r7S= r8S> r9S? r:S@ r;SA r<S[SB jr=SC r>SD r?SE r@SF rASG rBSH rCSI rDSJ rES\SK jrFS]SL jrGSM rHS^SN jrIS^SO jrJS^SP jrKSQ rLSR rMS*\R                  4SS jrOST rPSU rQSV rRSW rSSX rT\ R                  rV\ R                  (       a  SY\ R                  ;   a  \ R                  OSrX\ R                  (       a  SZ\ R                  ;   a  \ R                  rYgSrYg)_    N)	format_tbformat_exception)NotSupported)InvalidProxySettings)OperationFailed)ExchangeNotAvailable)OnMaintenance)AuthenticationErrorc                   X    \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrSrSrSrSrSrSrg)Argv%   FN )__name__
__module____qualname____firstlineno__id_testsstatic_testsws_testsrequest_testsresponse_testssandboxprivateOnlyprivatewsverbosenonceexchangesymbolinfosync	baseTestsexchangeTests__static_attributes__r       Q/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/test/tests_helpers.pyr   r   %   sZ    HLHMNGKG	BGEHFDDIMr%   r   z	--sandbox
store_truezenable sandbox mode)actionhelpz--privateOnlyzrun private tests onlyz	--privatezrun private testsz	--verbosezenable verbose outputz--wszwebsockets versionz--infozenable info outputz--staticzrun static testsz
--useProxyz	--idTestszrun brokerId testsz--responseTestszrun response testsz
--responsez--requestTestszrun request testsz	--requestz--synczis syncz--baseTestszis base testsz--exchangeTestszis exchange testsr   zexchange id in lowercase?)typer)   nargsr   zsymbol in uppercase)	namespacezsite-packagesa  You are running tests_async.py/test.py against a globally-installed version of the library! It was previously installed into your site-packages folder by pip or pip3. To ensure testing against the local folder uninstall it first with pip uninstall ccxt or pip3 uninstall ccxtc                 j    [        SXSSR                  [        U5      5      -   5        [        S5        g )Nz[TEST_FAILURE]z
<UNHANDLED EXCEPTION>

   )dumpjoinr   exit)r+   value	tracebacks      r&   handle_all_unhandled_exceptionsr6   b   s,    	D,G499U^_hUiKj,klGr%   pyPYproxiesz
/../../../r/   i'  c                 B   [        [        U 5      (       a  [        [        U 5      OSnSU -   n[        [        U5      (       a  [        [        U5      OSnU R                  SS5      n[        [        U5      (       a  [        [        U5      OSnU=(       d    U=(       d    U$ )NFz-- )hasattrargvgetattrreplace)arg
arg_existswith_hyphenarg_exists_with_hyphenwithout_hyphenarg_exists_wo_hyphens         r&   get_cli_arg_valuerF   w   s    '.tS'9'9s#uJ*K;B4;U;UWT;7[`[[r*N<CD.<Y<Y748_dG/G3GGr%   c            
      v    [        SR                  U  Vs/ s H  n[        U5      PM     sn5      5        g s  snf )N )printr2   str)argsr@   s     r&   r1   r1      s)    	#((-CH-
./-s   6c                     U $ Nr   )rJ   s    r&   convert_asciirN          Jr%   c                 .    [         R                  " U 5      $ rM   )jsonloadselems    r&   
json_parserU          ::dr%   c                 .    [         R                  " U 5      $ rM   )rQ   dumpsrS   s    r&   json_stringifyrY      rV   r%   c                 r    [         R                  " SSU 5      R                  5       nUR                  SS5      $ )Nz(?<!^)(?=[A-Z])_	o_h_l_c_vohlcv)resublowerr?   )contentress     r&   convert_to_snake_caserc      s/    
&&#S'
2
8
8
:C;;{G,,r%   c                     U $ rM   r   )
methodNames    r&   get_test_namerf      s    r%   c                 @    [         R                  R                  U 5      $ rM   )ospathisfileri   s    r&   io_file_existsrl      s    77>>$r%   c                 v    [        U SSS9nUR                  5       nU(       a  [        R                  " U5      $ U$ )Nrzutf-8)encoding)openreadrQ   rR   )ri   decodefsra   s       r&   io_file_readrt      s2    	dC'	*BggiGzz'""r%   c                 .    [         R                  " U 5      $ rM   )rh   listdirrk   s    r&   io_dir_readrw      s    ::dr%   c                 H    S[        U5      -   n[        X   U5      " X#/UQ76 $ Ntest_rc   r>   
test_filesre   r   skippedPropertiesrK   methodNameToCalls         r&   call_method_syncr      s/    !6z!BB:)+;<X`[_``r%   c                 d   #    S[        U5      -   n[        X   U5      " X#/UQ76 I S h  vN $  N7fry   r{   r|   s         r&   call_methodr      s8     !6z!BB/1AB8faeffffs   '0.0c                 :   #    [        X5      " U6 I S h  vN $  N7frM   r>   r   re   rK   s      r&    call_exchange_method_dynamicallyr      s     .5555s   c                     [        X5      " U6 $ rM   r   r   s      r&   %call_exchange_method_dynamically_syncr      s    8($//r%   c                 6   #    [        XU5      I S h  vN $  N7frM   )r   r   s      r&   call_overriden_methodr      s     1(MMMMs   c           
          S[        U 5      R                  -   S-   SR                  [        [        U 5      X R                  SS95      -   n[        U5      [        :  a	  US[         nU$ )N[z] r;      )limitr   )r+   r   r2   r   __traceback__lenLOG_CHARS_LENGTH)excmessages     r&   exception_messager      s^    DI&&&-8HcTWYjYjrs8t0uuG
7|&&!,-Nr%   c                     U $ rM   r   )r   s    r&   get_root_exceptionr      rO   r%   c                     [        U 5        g rM   )r3   )codes    r&   exit_scriptr      s	    Jr%   c                 R    [        X5      (       a  [        X5      nUb  US:w  a  U$ U$ )Nr;   )r<   r>   )r   propdefaultValuerb   s       r&   get_exchange_propr      s-    xh%?sbyJr%   c                 H    [        XU5        [        U [        U5      U5        g rM   )setattrrc   )r   r   r4   s      r&   set_exchange_propr      s    HE"H+D159r%   c                     [         (       a  [        [        U 5      " U5      $ U(       a  [        [        U 5      " U5      $ [        [        U 5      " U5      $ rM   )IS_SYNCHRONOUSr>   	ccxt_syncccxtproccxt)
exchangeIdrK   is_wss      r&   init_exchanger      s@    ~y*-d33w
+D114$T**r%   c                 p   0 nU [         S/-   n[        S[        U5      5       H  nX4   n[        U5      n[        (       d  SOSn[
        S-   U-   S-   nSU-   S-   U-   n	U(       a  S	n[
        S
-   U-   S-   nSU-   n	US-   U-   S-   n
[        U
5      (       d  Mu  [        R                  " U	5      nXU'   M     U$ )Nfeaturesr   asyncr!   z
/exchange//zccxt.test.exchange.z.test_proz/../z/test/Exchange/zccxt.pro.test.Exchange.test_rz   z.py)	PROXY_TEST_FILE_NAMEranger   rc   r   DIR_NAMErl   	importlibimport_module)
propertiesr   testsfinalPropListire   name_snake_caseprefixdir_to_testmodule_stringfilePathWithExtimps               r&   get_test_files_syncr      s    E"6
!CCM1c-()"%
/
; .F-6<-6AOSF"V+f47HHK:_LM%//AEIO,,))-8C #* * Lr%   c                     #    [        X5      $ 7frM   )r   )r   r   s     r&   get_test_filesr      s     z..s   c                 |   #    [         (       d+  [        U S5      (       a  U R                  5       I S h  vN   g g g  N7f)Nclose)r   r<   r   )r   s    r&   r   r      s0     Nwx99nn  :Ns   0<:<c                 
    U S L $ rM   r   )r4   s    r&   is_null_valuer      s    D=r%   c                 Z   ^ [         (       a  SU4S jjnX l        U $ SU4S jjnX l        U $ )Nc                    > T$ rM   r   urlmethodheadersbodydatas       r&   fetch!set_fetch_response.<locals>.fetch  s    Kr%   c                    >#    T$ 7frM   r   r   s       r&   r   r     s     s   )GETNN)r   r   )r   r   r   s    ` r&   set_fetch_responser      s&    	NOr%   c                      [         $ rM   )LANGr   r%   r&   get_langr     s    Kr%   c                      [         $ rM   )EXTr   r%   r&   get_extr     s    Jr%   c                      [         $ rM   )ROOT_DIRr   r%   r&   get_root_dirr         Or%   c                      [         $ rM   )ENV_VARSr   r%   r&   get_env_varsr     r   r%   c                      [         $ rM   )r   r   r%   r&   is_syncr     s    r%   r   z())T)r   rM   )F)ZargparserQ   rh   sysr5   r   r   r   r^   ri   dirnameabspath__file__r   rootappendccxt.async_supportasync_supportr   r   ccxt.pror   r   ccxt.base.errorsr   r   r   r   r	   r
   objectr   r=   ArgumentParserparseradd_argumentrJ   
parse_args	ExceptionErrorr6   
excepthookr   r   r!   r   r   r   environr   NEW_LINEr   rF   	isWsTestsr1   rN   rU   rY   rc   rf   rl   rt   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Exchanger   r   r   r   r   r   r   argvExchanger   
argvSymbol
argvMethodr   r%   r&   <module>r      s     	 
 1  	
 77??277??845	wwrwwx01   !  
 * 1 , 1 * 0	6 	* v		 	 	"   K;P  Q   OL?W  X   K;N  O   K;R  S   F<6J  K   H\8L  M   J|:L  M   L<N  O   K;O  P   %lAU  V   L<P  Q   $\@S  T   K;N  O   H\	  B   M,_  M   %lAT  U   JS/IQT  U   H3-B#  N   D  ! 
wwt}}%bggoodmm44
  j  k  k 	
 1
   l":: H f%	0-

 ag
60N:+&/	 	 }} KKC4;;,>T[[D
 KKDDKK,?T[[
T
r%   