
    ":h8o                        d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#  G d d      Z$y)    N)"AuthenticationErrorNotSupportedInvalidProxySettingsExchangeNotAvailableOperationFailedOnMaintenanceget_cli_arg_valueget_root_diris_syncdump
json_parsejson_stringifyconvert_asciiio_file_existsio_file_readio_dir_readcall_methodcall_method_sync call_exchange_method_dynamically%call_exchange_method_dynamically_syncget_root_exceptionexception_messageexit_scriptget_exchange_propset_exchange_propinit_exchangeget_test_files_syncget_test_filesset_fetch_responseis_null_valuecloseget_env_varsget_langget_extc                   >   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZg Zi Zi Zi Zi Zi ZdZdZdZd Zd Zd Zd Zd Zd	 Zd
 Zd Z d Z!g dfdZ"d Z#d Z$d Z%d Z&dNdZ'dOdZ(dOdZ)dNdZ*d Z+d Z,d Z-d Z.dNdZ/d Z0d Z1dNdZ2d Z3d  Z4dPd!Z5dPd"Z6dNd#Z7d$ Z8d% Z9d& Z:d' Z;d( Z<d) Z=dNd*Z>dNd+Z?dNd,Z@d- ZAdQd.ZBdQd/ZCdQd0ZDd1 ZEd2 ZFd3 ZGd4 ZHd5 ZId6 ZJd7 ZKd8 ZLd9 ZMd: ZNd; ZOd< ZPd= ZQd> ZRd? ZSd@ ZTdA ZUdB ZVdC ZWdD ZXdE ZYdF ZZdG Z[dH Z\dI Z]dJ Z^dK Z_dL Z`dM Zay)RtestMainClassF proxiesc                    t        d      xs t        d      | _        t        d      | _        t        d      xs t        d      | _        t        d      | _        t        d      | _        t        d      | _        t        d	      | _        t        d
      | _        t        d      | _	        t        d      | _
        t        d      | _        t               | _        t               | _        y )Nz--responseTestsz
--responsez	--idTestsz--requestTestsz	--requestz--infoz	--verbosez--debugz	--privatez--privateOnlyz	--sandboxz
--loadKeysz--ws)r	   response_testsid_testsrequest_testsinfoverbosedebugprivate_testprivate_test_onlysandbox	load_keysws_testsr#   langr$   ext)selfs    O/var/www/html/turnos/venv/lib/python3.12/site-packages/ccxt/test/tests_async.pyparse_cli_args_and_propsz&testMainClass.parse_cli_args_and_props    s    /0ABeFWXdFe)+6./?@bDUVaDb%h/	(5&y1
-k:!2?!C(5*<8)&1J	9    c                   K   | j                          | j                  rA| j                  r5| j                  ||       d {    | j	                  ||       d {    y| j                  r| j	                  ||       d {    y| j                  r| j                  ||       d {    y| j
                  r| j                          d {    yd}t        |dz   |z   dz   dz   | j                  |||| j                  t        d      d|       | j                  | j                  ddd}t        ||| j                        }|j                  rt        d	       | j!                  |       d {    t#        t%        | j&                  j)                                     d	kD  sJ d
       | j+                  |       | j-                  |       | j/                  ||       d {    t        d	       y 7 7 7 w7 S7 17 7 !w)NT
r'   z[INFO] TESTING 
--useProxy)exchangesymbolmethodisWsuseProxy0u  )r.   r/   enableRateLimittimeoutr   zTest files were not loaded)r9   r,   r*   run_static_request_testsrun_static_response_testsr+   run_broker_id_testsr   r6   r4   r	   r.   r/   r   aliasr   import_fileslenlist
test_fileskeysexpand_settings check_if_specific_test_is_chosen
start_test)r7   exchange_idsymbol_argvmethod_argvnew_lineexchange_argsr>   s          r8   initztestMainClass.init/   s    %%'$"5"5//[III00kJJJ00kJJJ//[III==**,,,X]X%*->>#!!MM),7K
 	 ||ZZ#	
 !mT]]K>>N)))4,,./014R6RR4X&--k:ooh444AE JJ K J -& 	* 	5s   >H G2HG5&HG8&H(G;)$HG>B!H/H0A1H!H"H5H8H;H>HHHc                 r   |t        | j                  j                               }|j                  d      }t	        |      dk\  rrt        dt	        |            D ]Y  }||   }t        dt	        |            D ]:  }||   }|j                  dd      }||k(  s | j                  j                  |       < [ y y y )N,   r   z()r'   )	rL   rM   rN   splitrK   rangereplaceonly_specific_testsappend)r7   rT   test_file_namespossible_method_namesitest_file_namejmethod_names           r8   rP   z.testMainClass.check_if_specific_test_is_chosenV   s    ""4??#7#7#9:O$/$5$5c$:!()Q.q#o"67 LA%4Q%7N"1c*?&@A L&;A&>&1&9&9$&C)[8 44;;NK	LL / #r:   c                 
  K   t        |j                  j                               }|j                  d       t	               rt        || j                        | _        yt        || j                         d {   | _        y7 
w)NloadMarketsT)	rL   hasrN   r_   r   r   r4   rM   r   )r7   r>   
propertiess      r8   rJ   ztestMainClass.import_filesc   sg     (,,++-.
-(91*dmmLDO  %3:t}}$MMDO Ns   A4B6B7Bc                 H   |j                   }t        |d      }t        |j                               }t	        dt        |            D ]Y  }||   }||   }|st        ||      |dz   |z   }|j                         }	t               }
|	|
v r|
|	   nd }|sMt        |||       [ y )NrequiredCredentialsr   _)	idr   rL   rN   r\   rK   upperr"   r   )r7   r>   rR   	req_credsobjkeysrb   
credentialis_requiredfull_keycredential_env_nameenv_varscredential_values               r8   load_credentials_from_envz'testMainClass.load_credentials_from_envl   s    kk%h0JK	y~~'(q#g,' 		NA J#J/K0:FN&,z9&.nn&6#'>EX\dEd8,?#@ko #%h
<LM		Nr:   c                 (   |j                   }t               dz   }t               dz   }t        |      }t        |      }i }|rt        |      }i }|rt        |      }|j	                  ||      }	|j                  |	|i       }
|
rt        |
j                               }t        dt        |            D ]W  }||   }|
|   sd }t        |
|   t              r#t        ||i       }|j	                  ||
|         }n|
|   }t        |||       Y | j                  r| j                  |       t               dz   }t        |      }|j                  ||i       | _        | j                   }|j                  |d      }||j#                  |      |_        t'        d      r\|j)                  |d      |_        |j)                  |d      |_        |j)                  |d	      |_        |j)                  |d
      |_        |j                  |di       | _        i | _        y )Nz	keys.jsonzkeys.local.jsonr   zskip-tests.jsonrE   r=   	httpProxy
httpsProxywsProxywssProxyskipMethods)rm   r
   r   r   deep_extend
safe_valuerL   rN   r\   rK   
isinstancedictr   r   r3   rw   skipped_settings_for_exchangeparse_to_intrE   r	   safe_string
http_proxyhttps_proxyws_proxy	wss_proxyskipped_methodschecked_public_tests)r7   r>   rR   keys_global
keys_localkeys_global_existskeys_local_existsglobal_settingslocal_settingsall_settingsexchange_settingssetting_keysrb   keyfinal_valueexistingskipped_fileskipped_settingsr   rE   s                       r8   rO   ztestMainClass.expand_settings{   s#   kk"n{2!^&77
+K8*:6*;7O)*5N++O^L$//k2N 1 6 6 89L1c,/0 	B"1o$S)"&K!"3C"8$?#4XsB#G&.&:&:8EVWZE[&\&7&<%h[A	B >>**84#~(99'5-5-@-@AQS^`b-c*(,(J(J%%%&CYO'44W=H\*"*"6"67TVa"bH#+#7#78UWc#dH  ( 4 45RT] ^H!)!5!56SU_!`H'223PR_acd$&!r:   c                 l    d}t        |      }||z
  dz
  }|dkD  rt        d|      D ]  }|dz  }	 ||z   S )Nr'   r    )rK   r\   )r7   messagesizeresmessage_lengthmissing_spacerb   s          r8   add_paddingztestMainClass.add_padding   sP    W~-111m, s
}r:   c                 <  K   d|v r| j                   dk(  rd|j                  d<   d|v r| j                   dk(  ry| j                  ||      }|dk(  }|dk(  }|| j                  k(  }|d	k(  }	|s|| j                  v r|syd }
||j
                  v xr |j
                  |   }|s7t        | j                        d
kD  r|j                  || j                        sd}
n.|s	|s|s|	sd}
n#t        |t              rd}
n|| j                  vrd}
|r|j                  d       d {    |j                  }|
r*| j                  rt        | j!                  |
d      ||       y| j                  r5d|j#                  |      z   dz   }t        | j!                  dd      |||       t%               rt'        | j                  ||||       n!t)        | j                  ||||       d {    | j                  rt        | j!                  dd      ||       |rd| j                  |<   y7 7 Aw)N	OrderBookcsFchecksumphpTrg   fetchCurrenciesfeaturesr   z[INFO] IGNORED_TESTz[INFO] UNSUPPORTED_TESTz[INFO] SKIPPED_TESTz[INFO] UNIMPLEMENTED_TEST   ()z[INFO] TESTINGz[INFO] TESTING DONE)r6   options	get_skipsproxy_test_file_namer   rh   rK   r^   in_arrayr   strrM   load_marketsrm   r-   r   r   jsonr   r   r   )r7   re   r>   args	is_publicskipped_properties_for_methodis_load_marketsis_fetch_currenciesis_proxy_testis_feature_testskip_messagesupported_by_exchangenameargs_stringifieds                 r8   test_methodztestMainClass.test_method   s#    +%$((d*:+0HZ(+%$((e*;(,x(M%&-7*.??$(A(AA&*4kT-F-FFPc!,!< [(,,{B[C(@(@$AA$EhN_N_`kmq  nF  nF  OG0L )>}]l4L5s;0L06L''---{{yyT%%lB7{K99"X]]4%883>!!"2B7{L\]9T__k8Ebdhidoo{HFceijjj99!!"7<dKP59D%%k2% . ks&   DHHB=HHA HHc                 .   i }||dz   | j                   z   g}t        dt        |            D ]c  }||   }|| j                  v st	        | j                  |   t
              r| j                  |   c S |j                  || j                  |         }e g dg dg dg dddgg d	d
dgd}t        |j                               }t        dt        |            D ]  }||   }	||	   }
|j                  ||
      s |	| j                  v r.t	        | j                  |	   t
              r| j                  |	   c S |j                  | j                  |	i       }|j                  ||      } d|v rd|vr|d   |d<   d|v rd|vr|d   |d<   d|v rd|vr|d   |d<   |S )N.r   )fetchOrderBookfetchOrderBooksfetchL2OrderBookwatchOrderBookwatchOrderBookForSymbols)fetchTickerfetchTickerswatchTickerwatchTickers)fetchTradeswatchTradeswatchTradesForSymbols)
fetchOHLCV
watchOHLCVwatchOHLCVForSymbolsfetchLedgerfetchLedgerEntry)fetchDepositsWithdrawalsfetchDepositsfetchWithdrawalsfetchDepositWithdrawFeefetchDepositWithdrawFees)	orderBooktickertradeohlcvledgerdepositWithdrawdepositWithdrawFee	timestampdatetimebidask
baseVolumequoteVolume)r6   r\   rK   r   r   r   r~   rL   rN   r   	safe_dict)r7   r>   re   final_skipsmethod_namesrb   m_nameobject_skipsobject_namesobject_nameobject_methodsextra_skipss               r8   r   ztestMainClass.get_skips   s   #[3%6%ABq#l+, 	bA!!_F---d226:C@//77"*"6"6{DDXDXY_D`"aK	b ATLI$&89`#<>X"Y
 L--/0q#l+, 	MA&q/K)+6N  n=4#7#77jI]I]^iIjlo>p//<<&001E1E{TVW&22;L	M ;&{1J&1+&>K
#[ 5K+?!,U!3KK'-;2N)4\)BK&r:   c                   K   d}|j                  |      }t        d|      D ]   }	 | j                  ||||       d {     y y7 # t        $ r}t	        |      }	|dk(  }
t        |	t              }t        |	t              }t        |	t              }|r||dz
  k(  rpt        |	t              }t        |	t              }d }d }|
r
d}|rd}nd}n|r|sd}d}nd}d}|rdnd}t        |d	d
|j                  ||t        |	             |cY d }~c S |j                  |dz   dz         d {  7   n|
r)t        ddt        |	      |j                  ||       Y d }~ y|r4| j                  r"t        dt        |	      |j                  ||       Y d }~ y|r7|r5| j                  r#t        ddt        |	      |j                  ||       Y d }~ yt        dt        |	      |j                  ||       Y d }~ yY d }~d }~ww xY ww)N   r   Trg   rZ   F[TEST_FAILURE][TEST_WARNING]zHMethod could not be tested due to a repeated Network/Availability issuesz |   zExchange can not load marketsz[INFO] NOT_SUPPORTED[INFO]z(Authentication problem for public method)r   r\   r   	Exceptionr   r   r   r   r   r   r   r   rm   r   sleepr-   )r7   re   r>   r   r   max_retriesr   rb   exer   is_auth_erroris_not_supportedis_operation_failedis_on_maintenanceis_exchange_not_availableshould_failret_success	fail_types                      r8   	test_safeztestMainClass.test_safe  sJ     #==.q+& =	%A<%&&{HdINNN=	%| y O 9%&r*#.-#?!+A/B!C$.q,$? '1!_'E#&K!O+-7=-I)5?CW5X1&*&***/K0.3.2  9AR.2.3 /4.28C$4IY	Y(rty  |D  |G  |G  IT  Vf  hy  z{  h|  }** 'nna!et^<<< '-/NPabcPdfnfqfqs~  AQ  R$ (99 !79J19Mx{{\giyz# ]99 +UWhijWkmumxmx  {F  HX  Y#-/@/CX[[R]_op$' =M9%s   #G=AAAG=A
G:B2G5G:G=G5&D)'+G5G=0G5G=3G5G="G5)G=5G::G=c                 `  K   g g |g|g|g|g|g|gg g g g d}| j                   r|g|g|g|g|g|g|gg|g|ggd	}|j                  |      }|d   }| j                   s,|rg |d<   n$|g|d<   |g|d<   |g|d<   |g|d<   |g|d	<   |g|d
<   || _        | j                  ||d       d {    y7 w)N)r   r   r   r   fetchLastPricesr   r   r   r   fetchBidsAsksfetchStatus	fetchTime)	r   r   r   r   watchBidsAsksr   r   r   r   spotr   fetchFundingRatesfetchFundingRatefetchFundingRateHistoryfetchIndexOHLCVfetchMarkOHLCVfetchPremiumIndexOHLCVT)r4   marketpublic_tests	run_tests)r7   r>   r?   testsr  is_spots         r8   run_public_testsztestMainClass.run_public_testsU  s     !"8#H &x!("8%h!
 ==%h)/ &x!'"(#)(.4XJ &x+1(
E (.}}+-'(.4X)*-3H()4:8/0,28'(+1(&'39(./!nnXud333 	4s   B$B.&B,'B.c           	      j  K   t        |j                               }g }t        dt        |            D ]/  }||   }||   }|j	                  | j                  ||||             1 t        j                  |  d {   }	g }
t        dt        |            D ]   }||   }|	|   }|r|
j	                  |       " |rdnd}t        |
      r,dj                  |
      }t        d|j                  |d|z          | j                  r.t        | j                  d|z   dz   |j                  z   d	             y
7 w)Nr   PUBLIC_TESTSPRIVATE_TESTSz, r   zFailed methods : z[INFO] END r   r   T)rL   rN   r\   rK   r_   r   asynciogatherjoinr   rm   r-   r   )r7   r>   r  is_public_test
test_namespromisesrb   	test_name	test_argsresultsfailed_methodstest_returned_valuetest_prefix_stringerrors_strings                 r8   r  ztestMainClass.run_tests  s1    %**,'
q#j/* 	\A"1Ii(IOODNN9h	>Z[	\  11q#j/* 	1A"1I")!*&%%i0		1
 0>^?~ IIn5M!8;;0BDWZgDgh99!!-2D"Ds"JX[["XZ\]^ 2s   A8D3:D1;*D3&BD3c                    K   | j                  d|g d       d {   }|syt        |j                        }t        d|d       y7 *w)Nrg   TFz[INFO:MAIN] Exchange loadedsymbols)r   rK   r$  r   )r7   r>   resultexchange_symbols_lengths       r8   load_exchangeztestMainClass.load_exchange  sK     ~~mXr4HH"%h&6&6"7*,CYO Is   AA+Ac                 D   d }|j                  | j                  d      }|j                  | j                  d      }|r|r|S |s|r|S t        dt        |            D ]A  }||   }|j	                  |j
                  |      }	|	'|j	                  |	d      }
|
s|
>|} |S  |S )NpreferredSpotSymbolpreferredSwapSymbolr   active)r   r   r\   rK   r   markets)r7   r>   r  r$  r?   preferred_spot_symbolpreferred_swap_symbolrb   sr  r+  s              r8   get_test_symbolztestMainClass.get_test_symbol  s     ( 4 4T5W5WYn o ( 4 4T5W5WYn o,((2((q#g,' 	A
A(()9)91=F!!,,VX>fnF	 r:   Nc                     |g d}|d   }t        dt        |            D ]  }||   |j                  v s||   c S  |S )N)	BTCETHXRPLTCBCHEOSBNBBSVUSDTr   )r\   rK   
currencies)r7   r>   codescoderb   s        r8   get_exchange_codeztestMainClass.get_exchange_code  sQ    =TEQxq#e*% 	 AQx8...Qx	  r:   c                     i }|j                   }t        |j                               }t        dt	        |            D ]-  }||   }||   }|r|d   r	|||d   <   |r |d   r&|||d   <   / |S )Nr   r  r?   )r,  rL   rN   r\   rK   )	r7   r>   r  r   r,  rN   rb   r   r  s	            r8   get_markets_from_exchangez'testMainClass.get_markets_from_exchange  s    ""GLLN#q#d)$ 	/Aq'CS\Fv(.F8$%&.(.F8$%	/ 
r:   c                    | j                  ||      }g d}g d}g d}|r|n|}| j                  |||      }|t        dt        |            D ]g  }	||	   }
|j	                  |d|
      }|j                  |d      }t        |j                               }t        |      }|sT| j                  |||      } n |Y|j	                  |dd      }g }t        dt        |            D ]  }	|j                  ||	   d           | j                  |||      }|5t        |j                               }t        |      }|dkD  r|d   }||d   }|S )	N)r2  r3  r4  r5  r8  DASHDOGEETCTRXr:  USDCUSDEURTUSDCNYJPYBRL)BTC/USDTBTC/USDCzBTC/USDzBTC/CNYzBTC/EURzBTC/AUDzBTC/BRLzBTC/JPYzETH/USDTzETH/USDCzETH/USDzETH/CNYzETH/EURzETH/AUDzETH/BRLzETH/JPYzEUR/USDTzEUR/USDzEUR/USDCzUSDT/EURzUSD/EURzUSDC/EURzBTC/ETHzETH/BTC)BTC/USDT:USDTBTC/USDC:USDCzBTC/USD:USDzETH/USDT:USDTzETH/USDC:USDCzETH/USD:USDBTC/USD:BTCzETH/USD:ETHr   baser?   r+  T)
r@  r0  r\   rK   	filter_byindex_byrL   rN   r_   values)r7   r>   r  current_type_marketsr<  spot_symbolsswap_symbolstarget_symbolsr?   rb   current_codemarkets_array_for_current_codeindexed_mktssymbols_array_for_current_codesymbols_lengthactive_marketsactive_symbolsrU  values_lengthfirsts                       r8   get_valid_symbolztestMainClass.get_valid_symbol  s   #==hM M h X)-<%%hnE>1c%j) $Qx191C1CDXZ`bn1o.'001OQYZ15l6G6G6I1J.!$%C!D!!11(DB`aF >%//0DhPTUNN1c.12 C%%nQ&7&ABC))(D.IF>.5578FKMq q	$"8_Fr:   c                   K   d }d }||j                  |      }|d   r|}nE|}nB|j                  d   r| j                  |d      }|j                  d   r| j                  |d      }|t        d|       |t        d|       | j                  s|j                  d   rB|@| j
                  rt        d       d|j                  d<   | j                  ||       d {    |j                  d   rB|@| j
                  rt        d	       d|j                  d<   | j                  ||       d {    | j                  s| j                  rt|j                  d   r+|)d|j                  d<   | j                  ||       d {    |j                  d   r+|)d|j                  d<   | j                  ||       d {    y7 7 7 C7 w)
Nr  TswapFz![INFO:MAIN] Selected SPOT SYMBOL:z![INFO:MAIN] Selected SWAP SYMBOL:z[INFO] ### SPOT TESTS ###defaultTypez[INFO] ### SWAP TESTS ###)
r  rh   rc  r   r1   r-   r   r  r0   run_private_tests)r7   r>   provided_symbolspot_symbolswap_symbolr  s         r8   test_exchangeztestMainClass.test_exchange  s    &___5Ff~--||F#"33HdC||F#"33HeD"4kB"4kB%%||F#(?994528  /++HkBBB||F#(?994528  /++HkBBB 6 6||F#(?28  /,,X{CCC||F#(?28  /,,X{CCC C
 C D DsJ   CGF>AG,G -AG>G?9G8G9G GGGc                 ^  K   |j                  d      st        dd       y| j                  |      }i dg dg dg dg d	g d
g d|gd|gd|gd|gd|ggd|gd|gd|gd|gd||gd|g|g|g|g|g|g|g|g|g|g|gd
}t        d      r|g|d<   | j                  r|g|g|g|g|gd}|j                  |      }|d   }| j                  s8|rg |d<   n0|g|d<   |g|d<   |g|d<   |g|d<   |g|d <   |g|d!<   |g|d"<   |g|d#<   | j                  ||d       d {    y 7 w)$NFz[INFO] Skipping private testszKeys not foundTsignInfetchBalancefetchAccountsfetchTransactionFeesfetchTradingFeesr  fetchOrdersfetchOpenOrdersfetchClosedOrdersfetchMyTradesfetchLeverageTiersr   fetchTransactionsr   r   fetchBorrowInterestcancelAllOrders)
fetchCanceledOrdersfetchMarginModesfetchPositionfetchDepositcreateDepositAddressfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchBorrowRateHistoryr   z--fundedTestscreateOrder)watchBalancewatchMyTradeswatchOrderswatchPositionwatchPositionsr  r   fetchPositionsr|  fetchPositionRisksetPositionModesetMarginModefetchOpenInterestHistoryr	  fetchFundingHistory)check_required_credentialsr   r>  r	   r4   r  r  )r7   r>   r?   r=  r  r  r  s          r8   rg  ztestMainClass.run_private_tests  s>    225902BC%%h/
b
B
 R
 #B	

 
 2
 F8
 x
  &
 fX
 !F8*
 D6
  $
 dV
 
  "D&>!
" x#
$ %+8!'$X!F%)F$(6&*V/3f'+f!%7
: _-$*8E- ==!%"( &x"(#)(E (.}}+-'( ,2(&'*0o&.4X)*,28'(*0o&5;H014:8/006x+,nnXue444s   D#D-%D+&D-c                 t  K   | j                   }| j                  dk(  rt               ryd}d }t        d|      D ]   }	 | j	                  ||g d       d {     y |"d|z   dz   t        |      z   }t        d|z          y7 ,# t
        $ r)}|}|j                  |dz         d {  7   Y d }~wd }~ww xY ww)	NpyTr   r   r   z[TEST_FAILURE] Failed z : r   )	r   r6   r   r\   r   r   r   r   r   )r7   r>   proxy_test_namer   	exceptionrd   r   error_messages           r8   test_proxiesztestMainClass.test_proxiesV  s     3388t		q+& 	/A/&&"dKKK	/  4FNQbclQmmM !M12 L /	nnQX.../sL   :B8BBB(B8B	B5B0%B(&B0+B80B55B8c                    |j                   dk(  rz|j                  J d       |j                  d   d   dk(  sJ d|j                  d   d   z          d|j                  d   d	   v s#J d
t	        |j                  d   d	         z          y |j                   dk(  rS|j                  dk(  sJ d|j                  z          |j                  d   d   dk(  sJ d|j                  d   d   z          y y )Nbinancez$binance.com hostname should be emptyapipubliczhttps://api.binance.com/api/v3z/https://api.binance.com/api/v3 does not match: zlending/union/accountsapigetz8SAPI should contain the endpoint lending/union/account, 	binanceusz
binance.usz#binance.us hostname does not match zhttps://api.binance.us/api/v3z.https://api.binance.us/api/v3 does not match: )rm   hostnameurlsr  r   )r7   r>   s     r8   check_constructorztestMainClass.check_constructorn  s   ;;)#$$,T.TT,=='15UU  j  XI  LT  LY  LY  Z_  L`  ai  Lj  Xj  jU+x||F/CE/JJ  v  NH  KY  Zb  Zf  Zf  gm  Zn  ot  Zu  Kv  Nv  vJ[[K'$$4o6[^f^o^o6oo4=='15TT  h  WG  JR  JW  JW  X]  J^  _g  Jh  Wh  hT (r:   c                   K   |j                   ry| j                  |       | j                  st        |d      r|j	                  d       	 | j                  |       d {   }|st               st        |       d {    y| j                  ||       d {    t               st        |       d {    y y 7 ]7 @7 '7 # t        $ r%}t               st        |       d {  7   |d }~ww xY ww)NTr2   )
rI   r  r2   r   set_sandbox_moder'  r   r!   rk  r   )r7   r>   r?   r%  r   s        r8   rQ   ztestMainClass.start_testx  s     >>x(<<,XyA%%d+	--h77Fy/))
 $$Xv6669Ho%%  8 * 7% 	9Ho%%G	s   AC6C B= C >B??C C6C CC 6C7C ;C6=C ?C C C 	C3C.&C)'C..C33C6c                 v    t        |      }t        |      }|}|d|z   dz   }|d|z   dz   |z   z  }|sJ |       y )N[]z computed: z	 stored: )r   )	r7   condr   calculated_outputstored_outputr   calculated_stringstored_stringr  s	            r8   assert_static_errorz!testMainClass.assert_static_error  sX     ++<=&}5?#IOM6DGXXX"]"tr:   c                 B    t               dz   |z   dz   }t        |      }|S )Nz./ts/src/test/static/markets/.jsonr
   r   r7   rm   filenamecontents       r8   load_markets_from_filez$testMainClass.load_markets_from_file  s*    
  >$CCbH7Rx(r:   c                 B    t               dz   |z   dz   }t        |      }|S )Nz ./ts/src/test/static/currencies/r  r  r  s       r8   load_currencies_from_filez'testMainClass.load_currencies_from_file  s(    >$FFKgUx(r:   c                    i }|r2||z   dz   }t        |      st        d|z          y t        |      ||<   |S t        |      }t	        dt        |            D ],  }||   }|j                  dd      }t        ||z         }	|	||<   . |S )Nr  z[WARN] tests not found: r   r'   )r   r   r   r   r\   rK   r]   )
r7   foldertarget_exchanger%  pathfilesrb   fileexchange_namer  s
             r8   load_static_dataztestMainClass.load_static_data  s    O+g5D!$'/$67&24&8F?#MF#q#e*% 	,A8D LL"5M"6D=1G$+F=!		,
 r:   c                     |y |j                  d      }d}t        dt        |            D ]L  }|dkD  s	||   }|j                  d      dkD  r!|j                  d      }|dz  }||d   z  } |S |dz  }||z  }N |S )N/r'   r      ?)r[   r\   rK   find)r7   url	url_partsr   rb   currentcurrent_partss          r8   remove_hostnamefrom_urlz%testMainClass.remove_hostnamefrom_url  s    ;IIcN	q#i.) 
	A1u#A,<<$r)$+MM#$6M3JC=++C 
 s
w
	 
r:   c                 *   i }|j                  d      }t        dt        |            D ]g  }||   }|j                  d      }t        |      }|dk7  r*|d   }|d   }	|	-|	j                  d      s|	j                  d      rt	        |	      }	|	||<   i |S )N&r   =r  rZ   r  {)r[   r\   rK   
startswithr   )
r7   r  r%  partsrb   part	key_valuekeys_lengthr   values
             r8   urlencoded_to_dictz testMainClass.urlencoded_to_dict  s    		#q#e*% 	 A8D

3Ii.KaA,CaLE!)9)9#)>EDTDTUXDY"5)F3K	  r:   c           	         t        |      rt        |      ry|s|syt        |t              rt        |t              rt        |j	                               }t        |j	                               }t        |      }	t        |      }
| j                  |	|
k(  d||       t        dt        |            D ]c  }||   }|j                  ||      r|j                  ||      s| j                  dd|z   ||       ||   }||   }| j                  ||||||       e yt        |t              rwt        |t              rgt        |      }t        |      }| j                  ||k(  d||       t        dt        |            D ]!  }||   }||   }| j                  |||||       # yt        |      rd n|}t        |      rd n|}|rt        |      nd}|rt        |      nd}d|z   dz   |z   }|r(| j                  d	k7  r| j                  ||k(  ||||       yt        |t              }t        |t              }t        |t              }t        |t              }|d u }|d u }||k(  xr ||k(  xr ||k(  }| j                  |d
|||       |xs |}|xs |} |xs |}!|s| s|!r| j                  d	k(  s| j                  dk(  rzd}"	 |j                  |       d}"|"r7| j                  |j                  |      |j                  |      k(  ||||       y| j                  t        |      t        |      k(  ||||       y| j                  t        |      t        |      k(  ||||       y| j                  d	k(  rM|j!                  |      }$|j!                  |      }%| j                  t        |$      t        |%      k(  ||||       y|j                  |      }&|j                  |      }'| j                  |&|'k(  ||||       y# t        $ r}#d}"Y d }#~#7d }#~#ww xY w)NTzoutput length mismatchr   Fzoutput key missing: 	undefinedzoutput value mismatch: != C#zoutput type mismatchGO)r    r   r   rL   rN   rK   r  r\   r   assert_new_and_stored_outputr   r5   boolparse_to_numericr   r   number_to_string)(r7   r>   	skip_keys
new_outputr  strict_type_checkasserting_keystored_output_keysnew_output_keysstored_keys_lengthnew_keys_lengthrb   r   stored_value	new_valuestored_array_lengthnew_array_lengthstored_itemnew_itemsanitized_new_outputsanitized_stored_outputnew_output_stringstored_output_stringmessage_erroris_computed_boolis_stored_boolis_computed_stringis_stored_stringis_computed_undefinedis_stored_undefinedshould_be_same
is_boolean	is_stringis_undefined	is_numberr   stringified_new_outputstringified_stored_outputnumeric_new_outputnumeric_stored_outputs(                                           r8   "assert_new_and_stored_output_innerz0testMainClass.assert_new_and_stored_output_inner  s   $})E-}d+*Z2N!%m&8&8&:!;":??#45O!$%7!8!/2O$$%7?%JLdfsu  A1c"456 x(+$$S)4 ))#?,,U4JS4PR_akl,S1&sO	11(IyR^`qsvwxH w t,*Z2N"%m"4":$$%8<L%LNfhu  xB  C1c-01 q+A.%a=11(IxQ\^opqn c -:*,E4J /<]/KdR_#=Q$8 9WbCZ3'>#?`k 47HH6QThhM dii4&7 (()=AX)XZgiv  yC  ER  SR O %//CT$J ",-Dd"K&01Es&K"$./F$L )=)E%'>$'F#"2n"D  "fK]aqKq  "f  yN  Re  ye((9OQ^`jlyz-?
.B2B	4K8Kl		T)tyyD/@$)	.$556JK(,I % 44X5N5NOc5dhp  iB  iB  CZ  i[  6[  ]j  ly  {E  GT  U#' 44]CT5UYfg{Y|5|  L  N[  ]g  iv  w#'00?P1QUbcwUx1x  {H  JW  Yc  er  s#yyD(191J1JK_1`.4<4M4MNe4f1005K1LPSTmPn1np}  @M  OY  [h  i
  .6-F-FGX-Y*080I0IJ^0_-001CG\1\^kmz  }G  IV  W+  ) .(-I.s   9O2 2	P;PPc                     d}	 | j                  ||||||      }|S # t        $ rM}| j                  r:| j                  |      dz   dz   | j                  |      z   dz   }	t	        d|	z          |d }~ww xY w)NTz(calculated)r  z(stored)z[TEST_FAILURE_DETAIL])r  r   r-   var_to_stringr   )
r7   r>   r  r  r  r  r  r   r   r  s
             r8   r  z*testMainClass.assert_new_and_stored_output2  s    	99(Iz[hj{  ~K  LC 
  	yy $ 2 2: > ORX X[_[m[mn{[| |  @J  !J,}<=G		s    	A2AA--A2c                 J    d }|d}|S t        |      rd}|S t        |      }|S )Nr  null)r    r   )r7   obj
new_strings      r8   r  ztestMainClass.var_to_string=  sB    
;$J
 	 3J  (,Jr:   c                 T   ||k7  r9| j                  |      }| j                  |      }	| j                  ||	k(  d||	       |||||j                  d      }
|j                  d      }|j                  |
d      }|j                  |d      }||y| j	                  |      }| j	                  |      }| j                  ||||       y|dk(  r;|9|7t        |t              rt        |      }t        |t              rt        |      }n|dk(  r'|%|#| j	                  |      }| j	                  |      }n`|dk(  r[|j                  d      s|j                  d	      rt        |      }t        |      }n"| j	                  |      }| j	                  |      }| j                  ||||       y)
Nzurl mismatchr  rZ   Tr   
urlencodedbothr  r  )
r  r  r[   r   r  r  r   r   r   r  )r7   r>   typer  
stored_urlrequest_urlr  r  
first_pathsecond_pathstored_url_partsnew_url_partsstored_url_querynew_url_querystored_url_paramsnew_url_paramss                   r8   assert_static_request_outputz*testMainClass.assert_static_request_outputG  s   $55jAJ66{CK$$Z;%>PZ\gh !
(:&[-D#-#3#3C#8  + 1 1# 6#+#6#67G#K  ( 3 3M1 E$,=3H  $($;$;<L$M!!%!8!8!G11(I~Whi6>}8z?U-- *= 9*c*'
3
\!}'@zG] 33MBM00<JV^'',0H0H0M *= 9'
3
 $ 7 7 F!44Z@
))(Iz=Yr:   c                 .    | j                  ||||d       y )NF)r  )r7   r>   r  computed_resultstored_results        r8   assert_static_response_outputz+testMainClass.assert_static_response_outputo  s    ))(IP]_der:   c                     |y g }t        dt        |            D ]5  }||   }t        |      r|j                  d        %|j                  |       7 |S )Nr   )r\   rK   r    r_   )r7   input	new_inputrb   r  s        r8   sanitize_data_inputz!testMainClass.sanitize_data_inputr  s^    =	q#e*% 	*AAhGW%  &  )	* r:   c           	        K   d }d }| j                   rt        d|d|d          	 t               s(t        ||| j	                  |d                d {    nt        ||| j	                  |d                	 |j                  |d      }	| j                  ||||d   ||	|       y7 R# t        $ r4}t        |t              s||j                  }|j                  }Y d }~hd }~ww xY w# t        $ re}d| _        d| j                  z   d	z   dz   |j                  z   d
z   dz   |z   d
z   dz   |d   z   d
z   t!        |      z   }
t        d|
z          Y d }~yd }~ww xY ww)Nz[INFO] STATIC REQUEST TEST::descriptionr  outputr  Tr  ][STATIC_REQUEST]r  r   )r-   r   r   r   r  r   r   r   r   last_request_bodylast_request_urlr   r  request_tests_failedr5   rm   r   )r7   r>   r@   datar  r  r  r	  r   call_outputr  s              r8   test_request_staticallyz%testMainClass.test_request_statically  s    99.T-=PQ		496xIaIabfgnboIpqqq5hH`H`aefmanHop	3"--dH=K--hieVacnpvw
  r  	4q"67//F"33K		4  	3(,D%$))O.AACG(++UX[[^aadjjmppsvvy}  L  zM  M  PS  S  Vg  hi  Vj  jM!M122		3se   "E,B& B$$B& 7,C& #E$B& &	C#/*CEC##E&	E/AE
EEEc                 z  K   |j                  |d      }t        ||d         }| j                  rt        d|d|d          	 t	               s<t        ||| j                  |d                d {   }| j                  ||||       n3t        ||| j                  |d               }| j                  ||||       t        |d        y7 Y# t        $ re}	d| _
        d| j                  z   d	z   dz   |j                  z   d
z   dz   |z   d
z   dz   |d   z   d
z   t        |	      z   }
t        d|
z          Y d }	~	xd }	~	ww xY ww)NparsedResponsehttpResponsez[INFO] STATIC RESPONSE TEST:r  r  r  Tr  z][STATIC_RESPONSE]r  r   )r   r   r-   r   r   r   r  r  r   r   response_tests_failedr5   rm   r   )r7   r>   r@   r  r#  expected_resultmocked_exchangeunified_resultunified_result_syncr   r  s              r8   test_response_staticallyz&testMainClass.test_response_statically  s    "--d4DE,XtN7KL99/d=>QR
	39'GRXZ^ZrZrswx  tA  [B  (C  "C22?I~_no&KHV\^b^v^vw{  }D  xE  _F  'G#22?IObdst
 	8T* "C
  	3)-D&$))O.BBSH8;;VY\\_bbekknqqtwwz~  @M  {N  N  QT  T  Wh  ij  Wk  kM!M122	3sC   ?D;,C
 .C/AC
 ;D;C
 
	D8AD3.D;3D88D;c                     | j                  |      }| j                  |      }t        |i d|d|ddddddd	dd
ddddddddddddddddddddddddgdddddi d      }||_        |S ) Nr,  r;  rD   F	rateLimitrZ   ry   zhttp://fake:8080rz   apiKeyr   secretsecretsecretpasswordwalletAddresswallet
privateKeyB0xff3bdd43534543d421f05aec535965b5050ad6ac15345435345435453495e771uidtokenlogin	accountIdaccounts	myAccountr:  )rm   r=  rF  r   Tl   I5 )enableUnifiedAccountenableUnifiedMarginaccessTokenexpiresleverageBrackets)r  r  r   r;  )r7   r  r,  r;  r>   s        r8   init_offline_exchangez#testMainClass.init_offline_exchange  s:   --m<33MB
  1
w1
*1
 u1
 	1

 +1
 ,1
 e1
 n1
 
1
 X1
 ^1
 51
 W1
 W1
 1
  
 !1
. (,',&*$&/1
 > )r:   c           	      j  K   | j                  |      }|j                  |di       }|j                  |d      }|rt        |      |_        |j                  |d      }|rt        |      |_        |j                  |d      }|rt        |      |_        |j                  |d      }	|	rt        |	      |_        |j                  |d      }
|
r|
|_	        |j                  |       |j                  |di       }t        |j                               }t        dt        |            D ]i  }||   }||   }t        dt        |            D ]C  }||   }|j                   }|j                  |di       }|j                  |j#                  ||             |j                  |d	      }|||k7  rc|j%                  |d
d      }|ry|j                  |d
d      }|dk7  r|j%                  |dd      }|r| j&                  dk(  r|j%                  |dd      }|r| j&                  dk(  r|j                  |d      }|j                  |dg       }| j)                  |||||       d {    |j+                  |j#                  |i             |_        F l t-               st/        |       d {    y7 N7 w)Nr   r1  r2  r7  r5  r=  methodsr   r  disabledFr'   
disabledCSr  
disabledGOr  
outputTypeskipKeysT)rD  r   r   r   r1  r2  r7  r5  	safe_listr=  extend_exchange_optionsr   rL   rN   r\   rK   r   r~   	safe_boolr5   r%  convert_to_safe_dictionaryr   r!   )r7   r  exchange_datar  r>   global_optionsapi_keyr2  private_keywallet_addressr=  rF  methods_namesrb   r@   r  rd   r%  old_exchange_optionstest_exchange_optionsr  is_disableddisabled_stringis_disabled_c_sharpis_disabled_gor  r  s                              r8    test_exchange_request_staticallyz.testMainClass.test_exchange_request_statically  s    --m<!++M9bI&&}h?!'lHO%%mX>!&kHO**=,G"%k"2H!--m_M%(%8H"%%mZ@ (H((8%%mYCW\\^,q#m,- 	wA"1%FfoG1c'l+ w '/'7'7$(0(;(;FIr(R%001E1EFZ\q1rs&11&-H)	[0H&00UK"*"6"6vz2"N"b(&.&8&8u&U#&DII,=!)!3!3FL%!P!tyyD'8++M<H$//z2N	228VVTS\]]]#+#F#FxG[G[\prtGu#v 3w	w: y/!! ^ "s%   IJ3 J/!AJ3)J1*J31J3c                   K   | j                  |      }|j                  |d      }|rt        |      |_        |j                  |d      }|rt        |      |_        |j                  |d      }|rt        |      |_        |j                  |d      }|rt        |      |_        |j                  |di       }	|j                  |di       }
|j                  |
       t        |	j                               }t        dt        |            D ]]  }||   }|	|   }t        dt        |            D ]7  }||   }|j                  |d      }|j                  }|j                  |di       }|j                  |j                  ||             |j                  |d	d
      }|rq|j                  |dd
      }|r| j                   dk(  r|j                  |dd
      }|r| j                   dk(  r|||k7  r|j                  |dd
      }|r| j                   dk(  r|j                  |dg       }| j#                  ||||       d {    |j                  |j                  |i              : ` t%               st'        |       d {    y7 I7 w)Nr1  r2  r7  r5  rF  r   r   r  rG  FrH  r  disabledPHPPHPrI  r  rK  T)rD  r   r   r1  r2  r7  r5  r   rM  rL   rN   r\   rK   r   r~   rN  r5   r.  r   r!   )r7   r  rP  r  r>   rR  r2  rS  rT  rF  r   rU  rb   r@   r  rd   r%  r  rV  rW  rX  rZ  is_disabled_phpr[  r  s                            r8   !test_exchange_response_staticallyz/testMainClass.test_exchange_response_statically
  s    --m<&&}h?!'lHO%%mX>!&kHO**=,G"%k"2H!--m_M%(%8H"%%mYC%%mYC((1W\\^,q#m,- 	aA"1%FfoG1c'l+ a &11&-H'/'7'7$(0(;(;FIr(R%001E1EFZ\q1rs&00UK&.&8&8u&U#&DII,="*"4"4V]E"R"		U(:)	[0H!)!3!3FL%!P!tyyD'8$//z2N	33HfiQWXXX 001E1EFZ\^1_`3a	a: y/!! Y
 "s%   H<J>J?AJJ
J
Jc                     |yd}|d   }t        |j                               }t        dt        |            D ])  }||   }||   }	t        |	      }
|j	                  ||
      }+ |S )NrZ   r   rF  )rL   rN   r\   rK   sum)r7   r>   rP  r  rc  rF  rU  rb   r@   r  results_lengths              r8   !get_number_of_tests_from_exchangez/testMainClass.get_number_of_tests_from_exchange?  sx     	*W\\^,q#m,- 	4A"1%FfoG \N,,sN3C		4
 
r:   c                    t        di       }|j                  |dd      }|r!| j                  dk(  rt        d|z   dz          y|j                  |dd      }|r!| j                  d	k(  rt        d|z   d
z          y|j                  |dd      }|r!| j                  dk(  rt        d|z   dz          y|j                  |dd      }|r!| j                  dk(  rt        d|z   dz          yy)NExchange
disabledPyFPYz[TEST_WARNING] Exchange z is disabled in pythonTr^  r_  z is disabled in phprH  r  z is disabled in c#rI  r  z is disabled in go)r   rN  r5   r   )r7   r  rP  r>   is_disabled_pyr`  rZ  r[  s           r8   check_if_exchange_is_disabledz+testMainClass.check_if_exchange_is_disabledL  s     R0!++M<OtyyD0+m;>VVW",,]M5Q		U 2+m;>SST&00eTDII$5+m;>RRS!++M<OtyyD0+m;>RRSr:   c                 F   K   | j                  d||       d {    y7 w)NrequestTrun_static_tests)r7   r  r  s      r8   rF   z&testMainClass.run_static_request_tests`  s'     ##I	JJJ 	K   !!c                   K   t               dz   |z   dz   }| j                  ||      }|yt        |j                               }t	        di       }g }d}	|rt        d|z          |rt        d|z          t        dt        |            D ]  }
||
   }||   }| j                  ||      }|r"| j                  |||      }|j                  |	|      }	|dk(  r#|j                  | j                  |||             o|j                  | j                  |||              	 t        j                  |  d {    | j"                  s| j$                  rt+        d       y t-               rdnd}d	| j&                  z   dz   |z   dz   t/        |	      z   dz   |z   dz   }t        d|z          y 7 r# t         $ rJ}|dk(  rd| _        nd| _        d	| j&                  z   d
z   t)        |      z   }t        d|z          Y d }~d }~ww xY ww)Nz./ts/src/test/static/r  Trg  r   z[INFO:MAIN] Exchange to test: z[INFO:MAIN] Testing only: rm  r  r  r   rZ   z[SYNC]r'   r  z[TEST_SUCCESS] z static z tests passed.r   )r
   r  rL   rN   r   r   r\   rK   rk  re  rc  r_   r\  ra  r  r  r   r"  r)  r5   r   r   r   r   )r7   r  r  r  r  static_data	exchangesr>   r  rc  rb   r  rP  rG  number_of_testsr   r  prefixsuccess_messages                      r8   ro  ztestMainClass.run_static_testsd  s    "99D@3F++FOD))+,	 R01OCD-	9:q#i.) 	qA%aLM'6M99-WH"DDX}^ghO,,sO4Cy  E EmUbdm no F F}Vcen op	q	3..(+++ $$(B(BN"))X"F!DIIo3f<?PPSVWZS[[^hhkoo  sC  COO+, , 	3y ,0)-1*$))O.AADUVWDXXM!M122	3sD   DG=F' 2F%3F' 7A.G=%F' '	G:0A G50G=5G::G=c                 F   K   | j                  d||       d {    y7 w)NresponseTrn  )r7   r  tests      r8   rG   z'testMainClass.run_static_response_tests  s)      ##JtDDD 	Erp  c                   K   | j                         | j                         | j                         | j                         | j	                         | j                         | j                         | j                         | j                         | j                         | j                         | j                         | j                         | j                         | j                         | j                         | j!                         | j#                         | j%                         | j'                         | j)                         | j+                         | j-                         | j/                         | j1                         | j3                         | j5                         | j7                         g}t9        j:                  |  d {    d| j<                  z   dz   }t?        d|z          tA        d       y7 0w)Nr  z&][TEST_SUCCESS] brokerId tests passed.r   r   T)!test_binancetest_okxtest_cryptocom
test_bybittest_kucointest_kucoinfuturestest_bitget	test_mexctest_htxtest_wootest_bitmarttest_coinex
test_bingxtest_phemextest_blofintest_hyperliquidtest_coinbaseinternationaltest_coinbase_advancedtest_woofi_pro
test_oxfuntest_xttest_vertextest_paradextest_hashkeytest_coincatch	test_defxtest_cryptomustest_deriver  r  r5   r   r   )r7   r  rv  s      r8   rH   z!testMainClass.run_broker_id_tests  s     %%'$:M:M:OQUQ`Q`Qbdhdtdtdvx|  yP  yP  yR  TX  Td  Td  Tf  hl  hv  hv  hx  z~  zG  zG  zI  KO  KX  KX  KZ  \`  \m  \m  \o  qu  qA  qA  qC  EI  ET  ET  EV  X\  Xh  Xh  Xj  lp  l|  l|  l~  @D  @U  @U  @W  Y]  Yx  Yx  Yz  |@  |W  |W  |Y  [_  [n  [n  [p  rv  rA  rA  rC  EI  EQ  EQ  ES  UY  Ue  Ue  Ug  im  iz  iz  i|  ~B  ~O  ~O  ~Q  SW  Sf  Sf  Sh  jn  jx  jx  jz  |@	  |O	  |O	  |Q	  S	W	  S	c	  S	c	  S	e	  f	nnh'''		/,TTX'(A	 	(s   F<G1>G/?1G1c                   K   | j                  d      }d}d}d}d }	 |j                  ddddd	       d {    |d
   }t        |      }|j                  |      sJ d|z   dz   |z          d }		 |j                  ddddd	       d {    d }
	 |j                  ddddd	       d {    |	d
   }t        |      }|j                  |      sJ d|z   dz   |z          |
d
   }|j                  |      sJ d|z   dz   |z          d }	 dddddddddddg}|j                  |       d {    |d   }t        dt        |            D ]-  }||   }|d
   }|j                  |      rJ d|z   dz   |z           t               st        |       d {    y7 `# t        $ r&}| j                  |j                        }Y d }~d }~ww xY w7 D# t        $ r&}| j                  |j                        }	Y d }~ld }~ww xY w7 Y# t        $ r&}| j                  |j                        }
Y d }~d }~ww xY w7 # t        $ r&}| j                  |j                        }Y d }~4d }~ww xY w7 ٭w)Nr  z
x-TKT5PX2Fz
x-cvBPrNm9z
x-xcKtGhcurM  limitbuyrZ    N  newClientOrderIdzbinance - spot clientOrderId: z does not start with spotIdrO  rQ  zbinance - swap clientOrderId: z does not start with swapIdz%binance - swap clientOrderIdInverse: selli )r?   r  sideamountpricer  )r?   r  r  r  batchOrdersr   z&binance createOrders - clientOrderId: T)rD  create_orderr   r  r   r   r  create_ordersr\   rK   r   r!   )r7   r>   spot_idswap_idinverse_swap_idspot_order_requestr   client_order_idspot_id_stringswap_order_requestswap_inverse_order_requestclient_order_id_swapswap_id_stringclient_order_id_inversecreate_orders_requestordersbatch_ordersrb   r  current_client_order_ids                       r8   r{  ztestMainClass.test_binance  sT    --i8&!	U''
GUAuMMM --?@W)).9  	_;[^m;m  qN  <N  Q_  <_  	_9!	U''%ERRR &*"	]''wq%PPP  22DEW#..~>  	i@`cw@w  {X  AX  [i  Ai  	i>"<=O"P&11/B  	xDk  oF  EF  If  Ef  ix  Ex  	xB $	X 	F ((000 -];q#l+, 	{A"1oG&-.@&A#*55nE  {Go  sJ  HJ  Mj  Hj  m{  H{  {E	{ y/!!_ N 	U!%!8!89S9S!T	U S 	U!%!8!89S9S!T	U Q 	])-)@)@A[A[)\&	]. 1 	X$($;$;H<V<V$W!	X "s  I+F FF 3I+.G G
G I+H &G?'H +AI+#H7 (H4)H7 -8I+&)I+I)I+F 	G!G<I+GI+
G 	G<G71I+7G<<I+?H 	H1H,&I+,H11I+4H7 7	I& I!I+!I&&I+c                   K   | j                  d      }d}d }	 |j                  ddddd       d {    |d   d	   }t        |      }|j                  |      sJ d
|z   dz   |z          |d   d   }||k(  sJ d|z   dz   |z          d }	 |j                  ddddd       d {    |d   d	   }	|	j                  |      sJ d|	z   dz   |z          |d   d   }
|
|k(  sJ d|z   dz   |
z          t               st        |       d {    y7 # t        $ r}t        |j                        }Y d }~d }~ww xY w7 # t        $ r}t        |j                        }Y d }~d }~ww xY w7 _w)Nokxe847386590ce4dBCrM  r  r  rZ   r  r   clOrdIdzokx - spot clientOrderId:  does not start with id: tagz
okx - id: z different from spot tag: rO  zokx - swap clientOrderId:  different from swap tag: T	rD  r  r   r   r   r   r  r   r!   )r7   r>   rm   r  r   r  	id_stringspot_tagr  r  swap_tags              r8   r|  ztestMainClass.test_okx  s    --e4!	H''
GUAuMMM -Q/	:G	)))4  	O6RUd6d  hC  7C  FO  7O  	O4%a(/2~Z|b03OORZZZ~!	H''%ERRR  2!4Y?#..y9  	Y;WZn;n  rM  <M  PY  <Y  	Y9%a(/2~Z|b03OORZZZ~y/!!' N 	H!+H,F,F!G	H S 	H!+H,F,F!G	H "s   E'D DD AE'
D: "D8#D: 'AE'E%E'D 	D5D0+E'0D55E'8D: :	E"EE'E""E'c                 x  K   | j                  d      }d}|j                          d {    d }	 |j                  ddddd       d {    |d   d	   }||k(  sJ d
|z   dz   |z          t               st        |       d {    y7 _7 A# t        $ r}t	        |j
                        }Y d }~bd }~ww xY w7 4w)N	cryptocomCCXTrM  r  r  rZ   r  params	broker_idzcryptocom - id:  different from  broker_id: T)rD  r   r  r   r   r   r   r!   r7   r>   rm   rm  r   r  s         r8   r}  ztestMainClass.test_cryptocom  s     --k:##%%%	=''
GUAuMMM H%k2	Bd 2R 7:X X[d ddy/!! 	& N 	= !;!;<G	=
 "sV   'B:B	B:B 	B
B 5B:B8B:B 	B5B0+B:0B55B:c                 T  K   | j                  d      }d }d}|j                  d   |k(  sJ d       	 |j                  ddddd	       d {    |d
   |k(  sJ d|z   dz          t               st        |       d {    y7 7# t        $ r}|j                  }Y d }~Od }~ww xY w7 )w)Nbybitr  brokerIdid not in optionsrM  r  r  rZ   r  Refererzbybit - id:  not in headers.TrD  r   r  r   last_request_headersr   r!   r7   r>   req_headersrm   r   s        r8   r~  ztestMainClass.test_bybit   s     --g6
+r1F3FF1	8''
GUAuMMM 9%+U^b-@CU-UU+y/!! N 	8"77K	8
 "sL   /B(B 
BB -B(<B&=B(B 	B#BB(B##B(c                   K   | j                  d      }d }|j                  d   d   d   }|j                  d   d   d   }|dk(  sJ d|z   dz          |d	k(  sJ d
|z   dz          	 |j                  ddddd       d {    d}|d   |k(  sJ d|z   dz          t               st        |       d {    y7 9# t        $ r}|j                  }Y d }~Qd }~ww xY w7 )w)Nkucoinpartnerr  rm   r   ccxtzkucoin - id:  not in optionsz$9e58cc35-5b5e-4133-92ec-166e3f077cb8zkucoin - key:  not in options.rM  r  r  rZ   r  KC-API-PARTNERr  Tr  )r7   r>   r  r  spot_keyr   rm   s          r8   r  ztestMainClass.test_kucoin  s    --h7""9-f5d;##I.v6u=& O/G";>O"OO AAsCSV^C^asCssA	8''
GUAuMMM +,2]Ob4HK]4]]2y/!! N 	8"77K	8 "sN   A"C%B9 =B7>B9 /C1C2C7B9 9	CCCCCc                   K   | j                  d      }d }d}|j                  d   d   d   }|j                  d   d   d   }||k(  sJ d|z   dz          |d	k(  sJ d
|z   dz          	 |j                  ddddd       d {    |d   |k(  sJ d|z   dz          t               st        |       d {    y7 7# t        $ r}|j                  }Y d }~Od }~ww xY w7 )w)Nkucoinfuturesccxtfuturesr  futurerm   r   zkucoinfutures - id: r  z$1b327198-f30c-4f14-a0ac-918871282f15zkucoinfutures - key: rO  r  r  rZ   r  r  r  Tr  )r7   r>   r  rm   	future_id
future_keyr   s          r8   r  z testMainClass.test_kucoinfutures!  s    --o>$$Y/9$?	%%i0:5A
BW 6 BEW WWCC~E\_iEil~E~~C	8''%ERRR +,2d4JR4ORd4dd2y/!! S 	8"77K	8 "sN   A$C'B9 ?B7 B9 -C1C2C7B9 9	CCCCCc                 `  K   | j                  d      }d }d}|j                  d   |k(  sJ d|z   dz          	 |j                  dddd	d
       d {    |d   |k(  sJ d|z   dz          t               st        |       d {    y7 7# t        $ r}|j                  }Y d }~Od }~ww xY w7 )w)Nbitgetp4svebrokerzbitget - id: r  rM  r  r  rZ   r  X-CHANNEL-API-CODEr  Tr  r  s        r8   r  ztestMainClass.test_bitget2  s     --h7)R/Y21EHY1YY/	8''
GUAuMMM /0B6a"8LOa8aa6y/!! N 	8"77K	8 "L   5B.B
 BB
 -B.B,B.B
 
	B)B$B.$B))B.c                   K   | j                  d      }d }d}|j                  d   |k(  sJ d|z   dz          |j                          d {    	 |j                  dddd	d
       d {    |d   |k(  sJ d|z   dz          t               st        |       d {    y7 U7 9# t        $ r}|j
                  }Y d }~Qd }~ww xY w7 +w)Nmexcr  r  zmexc - id: r  rM  r  r  rZ   r  sourcer  TrD  r   r   r  r   r  r   r!   r  s        r8   r  ztestMainClass.test_mexc@  s     --f5)R/W1CFW1WW/##%%%	8''
GUAuMMM 8$*SMB,>AS,SS*y/!! 	&M 	8"77K	8 "Z   AC
B CB$ (B")B$ --CCC"B$ $	C-B>9C>CCc                 :  K   | j                  d      }d}d }	 |j                  ddddd       d {    |d   }t        |      }|j                  |      sJ d	|z   d
z   |z          d }	 |j                  ddddd       d {    d }	 |j                  ddddd       d {    |d   }	|	j                  |      sJ d|	z   d
z   |z          |d   }
|
j                  |      sJ d|
z   d
z   |z          t               st        |       d {    y7 # t        $ r }t        |j                        }Y d }~d }~ww xY w7 # t        $ r}t        |j                        }Y d }~d }~ww xY w7 # t        $ r}t        |j                        }Y d }~d }~ww xY w7 w)Nhtx
AA03022abcrM  r  r  rZ   r  zclient-order-idzhtx - spot clientOrderId r  rO  rQ  channel_codezhtx - swap channel_code z htx - swap inverse channel_code Tr  )r7   r>   rm   r  r   r  r  r  r  r  r  s              r8   r  ztestMainClass.test_htxO  s    --e4!	H''
GUAuMMM -->?G	)))4  	N6QTc6c  gB  7B  EN  7N  	N4!	H''%ERRR &*"	P''wq%PPP  2.A#..y9  	W;UXl;l  pK  <K  NW  <W  	W9"<^"L&11)<  	e>`cz>z  ~Y  ?Y  \e  ?e  	e<y/!!/ N 	H!+H,F,F!G	H S 	H!+H,F,F!G	H Q 	P)3H4N4N)O&	P "s   FD DD 3F*E D?E F
E. "E,#E. 'A$FFFD 	D<D71F7D<<F?E 	E)
E$F$E))F,E. .	F7FFFFc           	      d  K   | j                  d      }d}d }	 |j                  ddddd       d {    |d   }t        |      }|j                  |      sJ d	|z   d
z   |z          d }	 |j                  dddddddi       d {    |d   }|j                  |      sJ d|z   d
z   |z          t               st        |       d {    y7 # t        $ r%}| j                  |j                        }Y d }~d }~ww xY w7 {# t        $ r}t        |j                        }Y d }~d }~ww xY w7 ew)Nwooz$bc830de7-50f3-460b-9ee0-f430f83f9dadrM  r  r  rZ   r  r  zwoo - broker_id: r  rO  	stopPricerC   r  zwoo - brokerId: T)
rD  r  r   r  r   r   r  r   r   r!   )	r7   r>   rm   r  r   r  r  stop_order_requestclient_order_id_stops	            r8   r  ztestMainClass.test_woon  s|    --e43!	U''
GUAuMMM '{3	G	##I.y0Ci0ORm0mpy0yy.!	H''%EUT   
  2*=#..y9  	O;MPd;d  hC  <C  FO  <O  	O9y/!!% N 	U!%!8!89S9S!T	U  	H!+H,F,F!G	H
 "s   D0C CC 3D0*D DD 
>D0D.	D0C 	C>C94D09C>>D0D 	D+D&!D0&D++D0c                   K   | j                  d      }d }d}|j                  d   |k(  sJ d|z   dz          |j                          d {    	 |j                  dddd	d
       d {    |d   |k(  sJ d|z   dz          t               st        |       d {    y7 U7 9# t        $ r}|j
                  }Y d }~Qd }~ww xY w7 +w)NbitmartCCXTxBitmart000r  zbitmart - id: r  rM  r  r  rZ   r  zX-BM-BROKER-ID not in headersTr  r  s        r8   r  ztestMainClass.test_bitmart  s     --i8
+r1\3Cb3HK\3\\1##%%%	8''
GUAuMMM +,2]4Dr4IL]4]]2y/!! 	&M 	8"77K	8 "r  c                   K   | j                  d      }d}|j                  d   |k(  sJ d|z   dz          d }	 |j                  dddd	d
       d {    |d   }t        |      }|j                  |      sJ d|z   dz   |z          t               st        |       d {    y7 S# t        $ r}t	        |j
                        }Y d }~td }~ww xY w7 2w)Ncoinexzx-167673045r  zcoinex - id: r  rM  r  r  rZ   r  	client_idzcoinex - clientOrderId: r  T)
rD  r   r  r   r   r   r   r  r   r!   )r7   r>   rm   r  r   r  r  s          r8   r  ztestMainClass.test_coinex  s    --h7
+r1[?R3GJ[3[[1!	H''
GUAuMMM -[9G	)))4  	M6PSb6b  fA  7A  DM  7M  	M4y/!! N 	H!+H,F,F!G	H "sM   5CB& B$B& A	CCC$B& &	C/C	C	CCc                 `  K   | j                  d      }d }d}|j                  d   |k(  sJ d|z   dz          	 |j                  dddd	d
       d {    |d   |k(  sJ d|z   dz          t               st        |       d {    y7 7# t        $ r}|j                  }Y d }~Od }~ww xY w7 )w)Nbingxr  r  zbingx - id: r  rM  r  r  rZ   r  zX-SOURCE-KEYr  Tr  r  s        r8   r  ztestMainClass.test_bingx  s     --g6)R/X"1DGX1XX/	8''
GUAuMMM >*b0Z.22EHZ2ZZ0y/!! N 	8"77K	8
 "r  c                 l  K   | j                  d      }d}d }	 |j                  ddddd       d {    |d   }t        |      }|j                  |      sJ d	|z   d
z   |z          t               st        |       d {    y7 S# t        $ r}t        |j                        }Y d }~td }~ww xY w7 2w)Nphemex
CCXT123456rM  r  r  rZ   r  clOrdIDzphemex - clOrdID: r  Tr  )r7   r>   rm   rm  r   r  r  s          r8   r  ztestMainClass.test_phemex  s     --h7	=''
GUAuMMM "),G	)))4  	G6J_6\_z6z  ~G  7G  	G4y/!! N 	= !;!;<G	= "sJ   B4B BB A	B4?B2 B4B 	B/B*%B4*B//B4c                 j  K   | j                  d      }d}d }	 |j                  dddd       d {    |d   }t        |      }|j                  |      sJ d|z   d	z   |z          t               st        |       d {    y
7 S# t        $ r}t        |j                        }Y d }~td }~ww xY w7 2w)Nblofinec6dd3a7dd982d0bzLTC/USDT:USDTr  r  rZ   r  zblofin - brokerId: r  Tr  )r7   r>   rm   rm  r   r  r  s          r8   r  ztestMainClass.test_blofin  s     --h7	=''5!LLL J'	G	##I.{0E	0QTo0or{0{{.y/!! M 	= !;!;<G	= "sJ   B3B BB A	B3>B1?B3B 	B.B)$B3)B..B3c                 V  K   | j                  d      }d}d }	 |j                  ddddd       d {    t        |d   d	         }||k(  sJ d
|z   dz   |z          t               st        |       d {    y7 H# t        $ r}t        |j                        }Y d }~id }~ww xY w7 2w)Nhyperliquid1zSOL/USDC:USDCr  r  rZ   d   action
brokerCodezhyperliquid - brokerId: r  T)rD  r  r   r   r   r   r   r!   r  s         r8   r  ztestMainClass.test_hyperliquid  s     --m<	=''%CPPP *<8:	Bi :Y FId dgi iiy/!! Q 	= !;!;<G	=
 "sI   B)A< A:A< >B)4B'5B):A< <	B$BB)B$$B)c                   K   | j                  d      }d|j                  d<   d}|j                  d   |k(  sJ d       d }	 |j                  ddd	d
d       d {    |d   }|j                  t        |            sJ d       t               st        |       d {    y7 H# t        $ r}t	        |j
                        }Y d }~id }~ww xY w7 2w)Ncoinbaseinternationalrandom	portfolionfqkvdjpr  r  rP  r  r  rZ   r  r  $clientOrderId does not start with idT
rD  r   r  r   r   r   r  r   r   r!   r7   r>   rm   rm  r   r  s         r8   r  z(testMainClass.test_coinbaseinternational  s     --.EF(0%
+r1F3FF1	=''%ERRR ""34))#b'2Z4ZZ2y/!! S 	= !;!;<G	=
 "sM   >CB$ B"B$ >CCC"B$ $	C-CCCCc                   K   | j                  d      }d}|j                  d   |k(  sJ d       d }	 |j                  ddddd	       d {    |d
   }|j                  t        |            sJ d       t               st        |       d {    y7 H# t        $ r}t	        |j
                        }Y d }~id }~ww xY w7 2w)Ncoinbaser  r  r  rN  r  r  rZ   r  r  r  Tr  r  s         r8   r  z$testMainClass.test_coinbase_advanced  s     --j9
+r1F3FF1	=''
GUAuMMM ""34))#b'2Z4ZZ2y/!! N 	= !;!;<G	=
 "sL   /CB 
BB >CC CB 	B=B83C8B==Cc                   K   | j                  d      }d|_        d}|j                          d {    d }	 |j                  ddddd       d {    |d	   }||k(  sJ d
|z   dz   |z          t               st        |       d {    y7 \7 ># t        $ r}t        |j                        }Y d }~_d }~ww xY w7 4w)Nwoofipro+secretsecretsecretsecretsecretsecretsecretsr  rP  r  r  rZ   r  	order_tagzwoofipro - id: r  T)	rD  r2  r   r  r   r   r   r   r!   r  s         r8   r  ztestMainClass.test_woofi_pro  s     --j9G##%%%	=''%ERRR K(	Bc 1B 69W WZc ccy/!! 	& S 	= !;!;<G	=
 "sV   .B>BB>B BB 2B>B<B>B 	B9B4/B>4B99B>c                 z  K   | j                  d      }d|_        d}|j                          d {    d }	 |j                  ddddd       d {    |d	   }|d
   }|d   }||k(  s"J dt        |      z   dz   t        |      z          y7 [7 =# t        $ r}t        |j                        }Y d }~^d }~ww xY ww)Noxfunr  r   z
BTC/USD:OXr  r  rZ   r  r  r   r  zoxfun - id: r  T)rD  r2  r   r  r   r   r   r   )r7   r>   rm   rm  r   r  rb  r  s           r8   r  ztestMainClass.test_oxfun  s     --g6G##%%%	=''guaOOO "q	(O	BjR 8;Y Y\_`i\j jj 	& P 	= !;!;<G	=sJ   .B;BB;B BB 8B;B 	B8B3.B;3B88B;c                   K   | j                  d      }d}d }	 |j                  ddddd       d {    |d   }||k(  sJ d	|z   d
z   |z          d }	 |j                  ddddd       d {    |d   }||k(  sJ d	|z   d
z   |z          t               st        |       d {    y7 v# t        $ r}t        |j                        }Y d }~d }~ww xY w7 i# t        $ r}t        |j                        }Y d }~d }~ww xY w7 _w)Nxtr  rM  r  r  rZ   r  mediaz	xt - id: r  rO  clientMediaTrD  r  r   r   r   r   r!   )r7   r>   rm   r  r   
spot_mediar  
swap_medias           r8   r  ztestMainClass.test_xt!  s7    --d3!	H''
GUAuMMM (0
R]r!14P!PS]!]]!	H''%ERRR (6
R]r!14P!PS]!]]y/!! N 	H!+H,F,F!G	H S 	H!+H,F,F!G	H
 "s   DB* B(B* DC +C,C 02D"D#D(B* *	C3CDCDC 	C? C:5D:C??Dc                   K   | j                  d      }d|_        d|_        ddg dd|j                  d<   d	}|j	                          d {    d }	 |j                  d
dddd       d {    |d   }|d   }||k(  s"J dt        |      z   dz   t        |      z          t               st        |       d {    y7 s7 U# t        $ r}t        |j                        }Y d }~vd }~ww xY w7 4w)Nvertex*0xc751489d24a33172541ea451bc253d7a9e98c781@c33b1eb4b53108bf52e10f636d8c1236c04c33a712357ba3543ab45f48a5cb0b42161*0xbbee07b3e8121227afcfe1e2b82772246226128e)o*0x0000000000000000000000000000000000000000*0x70e5911371472e406f1291c621d1c8f207764d73*0xf03f457a30e598d5020164a339727ef40f2b8fbc*0x1c6281a78aa0ed88949c319cba5f0f0de2ce8353*0xfe653438a1a4a7f56e727509c341d60a7b54fa91*0xb6304e9a6ca241376a5fc9294daa8fca65ddcdcd*0x01ec802ae0ab1b2cc4f028b9fe6eb954aef06ed1r#  *0x9c52d5c4df5a68955ad088a781b4ab364a861e9er#  *0x2a3bcda1bb3ef649f3571c96c597c3d2b25edc79r#  *0x0492ff9807f82856781488015ef7aa5526c0edd6r#  *0xea884c82418ebc21cd080b8f40ecc4d06a6a6883r#  *0x5ecf68f983253a818ca8c17a56a4f2fb48d6ec6br#  *0xba3f57a977f099905531f7c2f294aad7b56ed254r#  *0x0ac8c26d207d0c6aabb3644fea18f530c4d6fc8er#  *0x8bd80ad7630b3864bed66cf28f548143ea43dc3br#  *0x045391227fc4b2cdd27b95f066864225afc9314er#  *0x7d512bef2e6cfd7e7f5f6b2f8027e3728eb7b6c3r#  *0x678a6c5003b56b5e9a81559e9a0df880407c796fr#  *0x14b5a17208fa98843cc602b3f74e31c95ded3567*0xe442a89a07b3888ab10579fbb2824aeceff3a282r#  r#  *0xac28ac205275d7c2d6877bea8657cebe04fd9ae9r#  *0xed811409bfea901e75cb19ba347c08a154e860c9r#  *0x0f7afcb1612b305626cff84f84e4169ba2d0f12cr#  *0xe4b8d903db2ce2d3891ef04cfc3ac56330c1b0c3*0x5f44362bad629846b7455ad9d36bbc3759a3ef62r#  r#  *0xa64e04ed4b223a71e524dc7ebb7f28e422ccfdder#  *0x2ee573caab73c1d8cf0ca6bd3589b67de79628a4r#  *0x01bb96883a8a478d4410387d4aaf11067edc2c74r#  *0xe7ed0c559d905436a867cddf07e06921d572363cr#  *0xa94f9e3433c92a5cd1925494811a67b1943557d9r#  *0xa63de7f89ba1270b85f3dcc193ff1a1390a7c7c7r#  *0xc8b0b37dffe3a711a076dc86dd617cc203f36121r#  *0x646df48947ff785fe609969ff634e7be9d1c34cdr#  *0x42582b404b0bec4a266631a0e178840b107a0c69r#  *0x36a94bc3edb1b629d1413091e22dc65fa050f17fr#  *0xb398d00b5a336f0ad33cfb352fd7646171cec442r#  *0xb4bc3b00de98e1c0498699379f6607b1f00bd5a1r#  *0xfe8b7baf68952bac2c04f386223d2013c1b4c601r#  *0x9c8764ec71f175c97c6c2fd558eb6546fcdbea32r#  *0x94d31188982c8eccf243e555b22dc57de1dba4e1r#  *0x407c5e2fadd7555be927c028bc358daa907c797ar#  *0x7e97da2dbbbdd7fb313cf9dc0581ac7cec999c70r#  *0x7f8d2662f64dd468c423805f98a6579ad59b28far#  *0x3398adf63fed17cbadd6080a1fb771e6a2a55958r#  *0xba8910a1d7ab62129729047d453091a1e6356170r#  *0xdc054bce222fe725da0f17abcef38253bd8bb745r#  *0xca21693467d0a5ea9e10a5a7c5044b9b3837e694r#  *0xe0b02de2139256dbae55cf350094b882fbe629ear#  *0x02c38368a6f53858aab5a3a8d91d73eb59edf9b9r#  r#  r#  r#  r#  *0xfe8c4778843c3cb047ffe7c0c0154a724c05cab9r#  *0xe2e88862d9b7379e21c82fc4aec8d71bddbcdb4br#  *0xbbaff9e73b30f9cea5c01481f12de75050947fd6r#  *0xa20f6f381fe0fec5a1035d37ebf8890726377ab9r#  *0xbad68032d012bf35d3a2a177b242e86684027ed0r#  *0x0e61ca37f0c67e8a8794e45e264970a2a23a513cr#  *0xa77b7048e378c5270b15918449ededf87c3a3db3r#  *0x15afca1e6f02b556fa6551021b3493a1e4a7f44f)chain_idendpoint_addr
book_addrsv1contractsl   ,__E rP  r  r  rZ   r  place_orderrm   zvertex - id: r  T)rD  r5  r7  r   r   r  r   r   r   r   r   r!   )r7   r>   rm   rm  r   orderr  s          r8   r  ztestMainClass.test_vertex6  s    --h7!M`I MP+
'
 ##%%%	=''%ERRR &$K	Bk#b' 9<Z Z]`aj]k kky/!! 	& S 	= !;!;<G	= "s[   A
C1C C1C ,C-C 1A	C1:C/;C1C 	C,C'"C1'C,,C1c                   K   | j                  d      }d|_        d|_        d|j                  d<   dddd	d
ddddddddddddgddddd|j                  d<   d }d}|j                  d   |k(  sJ d|z   d z          |j	                          d {    	 |j                  d!d"d#d$d%       d {    |d&   |k(  sJ d|z   d'z          t               st        |       d {    y(7 U7 9# t        $ r}|j                  }Y d }~Qd }~ww xY w7 +w))Nparadexr  r   r:  	authTokenz(https://potc-testnet-sepolia.starknet.ioz5https://pathfinder.api.testnet.paradex.trade/rpc/v0_7PRIVATE_SN_POTC_SEPOLIAz&https://voyager.testnet.paradex.trade/A0x286003f7c7bfc3f94e8f0af48b48302e7aee2fb13c23b141479ba00832ef2c6   A0x3530cc4759d78042f1b543bf797f5f3d647cde0388c33734cf91b7f7b9314a9A0x41cb0280ebadaa75f996d8d92c6f265f6d040bb3ba442e5f86a554f1765244eA0x2c6a867917ef858d6b193a0ff9e62b46d0dc760366920d631715d58baeaca1fz	TEST USDCrF     *0x29A873159D5e14AcBd63913D4A7E2df04570c666*0x8586e05adc0C35aa11609023d4Ae6075Cb813b4CA0x6f373b346561036d98ea10fb3e60d2f459c872b1933b50b21fe6ef4fda3b75eA0x46e9237f5408b5f899e72125dd69bd55485a287aaf24663d3ebe00d237fc7ef)r   r?   decimalsl1_token_addressl1_bridge_addressl2_token_addressl2_bridge_address*0x582CC5d9b509391232cd544cDF9da036e55833Af*0x11bACdFbBcd3Febe5e8CEAa75E0Ef6444d9B45FB11155111z0.2)starknet_gateway_urlstarknet_fullnode_rpc_urlstarknet_chain_idblock_explorer_urlparaclear_addressparaclear_decimalsparaclear_account_proxy_hashparaclear_account_hashoracle_addressbridged_tokensl1_core_contract_addressl1_operator_addressl1_chain_idliquidation_feesystemConfigr  r  zparadex - id: r  zBTC/USD:USDCr  r  rZ   r  zPARADEX-PARTNERr  T)
rD  r5  r7  r   r   r  r   r  r   r!   r  s        r8   r  ztestMainClass.test_paradexM  s_    --i8!M`(/%$N)`!:"J!d"#,o&iaDE[\   )U#O%$-,
(0 )R/Z1AB1FIZ1ZZ/##%%%	8''5QQQ ,-3^5E5JM^5^^3y/!! 	&Q 	8"77K	8 "sZ   BDC$DC( ,C&-C( 1-DD
D&C( (	D1D=DDDc                 "  K   | j                  d      }d }d}	 |j                  ddddd       d {    |d   |k(  sJ d	|z   d
z          t	               st        |       d {    y7 7# t        $ r}|j                  }Y d }~Od }~ww xY w7 )w)Nhashkey10000700011rM  r  r  rZ   r  zINPUT-SOURCEzhashkey - id: r  TrD  r  r   r  r   r!   r  s        r8   r  ztestMainClass.test_hashkeyw  s     --i8	8''
GUAuMMM >*b0\2BR2GJ\2\\0y/!! N 	8"77K	8
 "I   BA+ A)A+ -B#B$B)A+ +	B
4B BB

Bc                 "  K   | j                  d      }d }d}	 |j                  ddddd       d {    |d   |k(  sJ d	|z   d
z          t	               st        |       d {    y7 7# t        $ r}|j                  }Y d }~Od }~ww xY w7 )w)N	coincatch47cfyrM  r  r  rZ   r  r  zcoincatch - id: r  Tr  r  s        r8   r  ztestMainClass.test_coincatch  s     --k:	8''
GUAuMMM /0B6d8JR8ORd8dd6y/!! N 	8"77K	8
 "r  c                 "  K   | j                  d      }d }	 |j                  ddddd       d {    d}|d   |k(  sJ d	|z   d
z          t	               st        |       d {    y7 9# t        $ r}|j                  }Y d }~Qd }~ww xY w7 )w)NdefxzDOGE/USDC:USDCr  r  r  rZ   r  zX-DEFX-SOURCEzdefx - id: r  Tr  )r7   r>   r  r   rm   s        r8   r  ztestMainClass.test_defx  s     --f5	8''(8'5#qQQQ ?+r1Z=23EHZ3ZZ1y/!! R 	8"77K	8 "sI   BA+ A)A+ /B#B$B)A+ +	B
4B BB

Bc                 4  K   | j                  d      }d }	 |j                  ddddd       d {    d}|d   |k(  sJ d	|z   d
z          t               st        |       d {    y7 9# t        $ r}t        |j                        }Y d }~Zd }~ww xY w7 2w)N	cryptomusrM  r  r  rZ   r  r  r  zcryptomus - tag:  not in request.Tr  )r7   r>   rm  r   r  s        r8   r  ztestMainClass.test_cryptomus  s     --k:	=''
GVQNNN u~$T&9C&?BT&TT$y/!! O 	= !;!;<G	=
 "sI   BA+ A)A+ /B#B$B)A+ +	B4B	BBBc                   K   | j                  d      }d}|j                  d   |k(  sJ d|z   dz          d }	 dddd}d|_        d	|_        |j	                  d
dddd|       d {    |d   |k(  sJ d|z   dz          t               st        |       d {    y7 7# t
        $ r}t        |j                        }Y d }~Xd }~ww xY w7 2w)Nderive*0x0ad42b8e602c2d3d475ae52d678cf63d84ab2749rm   zderive - id: r  i  
   )subaccount_idmax_feederiveWalletAddressB0x7b77bb7b20e92bbb85f2a22b330b896959229a5790e35f2f290922de3fb22ad5z	LBTC/USDCr  r  g{Gz?i  referral_codezderive - referral_code: r  T)
rD  r   r5  r7  r  r   r   r   r   r!   )r7   r>   rm   rm  r  r   s         r8   r  ztestMainClass.test_derive  s     --h79%+U_r-ADU-UU+
	=!%'SF
 &RH""fH''WfdDRXYYY '2-c/IB/NQc/cc-y/!! Z 	= !;!;<G	= "sL   5C-B %B&B *-CC
CB 	C(C=CCC)N)T)TN)NN)b__name__
__module____qualname__r+   r"  r)  r,   r4   r*   r-   r.   r/   r0   r1   r3   r2   r^   r   r   r   rM   r  r6   r5   r   r9   rW   rP   rJ   rw   rO   r   r   r   r   r  r  r'  r0  r>  r@  rc  rk  rg  r  r  rQ   r  r  r  r  r  r  r  r  r  r  r  r  r%  r.  rD  r\  ra  re  rk  rF   ro  rG   rH   r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r:   r8   r&   r&      s   H !MHNDGELIG$&!OJL
CD$%NLN,'\-^)V ;= FP)V2$ D%NB5H0h2
#
$$"Pd	&Pf0&%N7r3j('-R	6p4$">4    *.(Tr:   r&   )%r  tests_helpersr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r&   r  r:   r8   <module>r     sL     O	  O	  O	  O	  O	  O	  O	  O	  O	y yr:   