
    E#i                     h    S SK r S SKrS SKrS SKr/ SQrS rSrSrSrSr	Sr
SrSrSr\S\	\4S	 jrS
 rg)    N)
TRUNCATEROUNDROUND_UP
ROUND_DOWNDECIMAL_PLACESSIGNIFICANT_DIGITS	TICK_SIZE
NO_PADDINGPAD_WITH_ZEROdecimal_to_precision                  c                   ^ Uc   S5       e[        U[        5      (       a  [        U5      n[        U[        5      (       dE  [        U[        R                  5      (       d&  [        U[
        R                  5      (       d   S5       eU[        :X  a  US:  d   S5       eO![        U[
        R                  5      (       d   eU[        [        4;   d   eU[        [        [        4;   d   eU[        [        4;   d   e[        R                  " 5       nU[        :w  a  [        UR                   S-
  U5      nSUR"                  [        R$                  '   [        R&                  Ul        [        R                  " [        U 5      5      m[        R                  " [        U5      5      nSR+                  T5      nS nS n	US:  a  U[        :X  a  [-        S	5      eU	" U5      n
U[        :X  a<  SR+                  U
[        R                  " [/        TU
-  US[        U5      5      -  5      $ U[        :X  a  [/        TTU
-  -
  US[        U5      $ U[        :X  Ga"  [1        T5      U-  nUS:w  aY  U[        :X  a4  TS:  a  XS-  :  a	  TU-
  U-   mO8TU-
  mO2XS-  :  a	  TU-   U-
  mO!TU-   mOU[        :X  a  TS:  a  TU-   mOTU-
  m[2        R4                  " S
SSR+                  U5      5      R7                  S5      n[9        U5      S:  a  [9        US   5      nO;[2        R:                  " S
US   5      nUc  SnO[9        UR=                  S5      5      * n[/        SR+                  T5      [        U[        U5      $ U[        :X  Ga  U[        :X  a'  SR+                  TR?                  U	" U5      5      5      nOU[        :X  a  UTRA                  5       -
  S-
  nU	" U5      nUS:  aL  US U nU[        R                  " U(       a  UOS5      -  nUU-   nSR+                  [        UU4U4S jS95      nO SR+                  TR?                  U5      5      nURC                  S5      (       a  [E        S USS   5       5      (       a  USS  nGOU[        :X  Ga  U[        :X  a*  SU;   a  UR7                  S5      OUS4u  nnUS-   US U -   nOU[        :X  a  US:X  a  gSU;   a  URG                  S5      O
[9        U5      nUTRA                  5       -
  nUU-   nUU:  a  US-  nU[9        URI                  SS5      5      :  a  UnOUS U RK                  US5      nURC                  S5      (       a  [E        S USS   5       5      (       a  USS  nURM                  S5      nU[        :X  a(  SU;   a   URM                  S5      RM                  S5      $ U$ U[        :X  a  SU;   a  U[        :X  a,  UR7                  S5      u  nnUS-   URK                  US5      -   $ U[        :X  ab  [9        [O        [P        RR                  " S U5      5      5      nSUUS  ;   a  US-  nUS U UUS  RM                  S5      RK                  US5      -   $ g U[        :X  a)  U[9        U5      :  a  US-   U[9        U5      -
  S-  -   $  U$ U[        :X  a  US:  a  US-   US-  -   $ U$ g )Nzprecision should not be Nonezprecision has an invalid numberr   zGnegative or zero precision can not be used with TICK_SIZE precisionModer   T{:f}c                 6    [         R                  " S5      U * -  $ )N10)decimalDecimalxs    X/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/base/decimal_to_precision.pypower_of_10)decimal_to_precision.<locals>.power_of_10C   s    t$!,,    z7TICK_SIZE cant be used with negative numPrecisionDigitsz0+$ .r   0c                     > [        U T-
  5      $ )N)abs)r   decs    r   <lambda>&decimal_to_precision.<locals>.<lambda>y   s    #aRUg,r   )keyz-0c              3   *   #    U  H	  oS ;   v   M     g7fz0.N .0cs     r   	<genexpr>'decimal_to_precision.<locals>.<genexpr>|        +K{!I{   c              3   *   #    U  H	  oS ;   v   M     g7fr)   r*   r+   s     r   r.   r/      r0   r1   c                 $    U S:H  =(       d    U S:H  $ )Nr    r!   r*   r   s    r   r%   r&      s    a3h>R!s(>Rr   )*
isinstancestrfloatr   r   numbersIntegralr	   r   r   r   r   r
   r   
getcontextminprectraps	UnderflowROUND_HALF_UProundingformat
ValueErrorr   r#   resubsplitlensearchgroupquantizeadjusted
startswithallindexreplaceljustrstriplist	itertools	takewhile)nrounding_mode	precisioncounting_modepadding_modecontextprecision_decstringpreciser   
to_nearestmissingpartsnew_precisionmatchqsigfigstring_to_precisionbelowabovebeforeafterdotstartendfsfgr$   s                             @r   r   r   $   s    @"@@ )S!!)$	i'':i+Q+QU_`ikrk{k{U|U|  `  `  `|	!1}ggg})W%5%56666Xu----^-?KKKKJ6666   "G	!q()4	 (,GMM'##$,,G
//#a&
!COOC	N3M]]3FG- 1}I%VWW +
E!==goo>RSVYcScertu  xF  HT  ?U  /V  "V  W  Wh&'cJ.>(>qR`bnoo	!c(]*a<%7!"33!Gmm;!Gm!"33!Gmm;!Gm(*7-C-Cvr6==#?@FFsKu:>aMMIIfeAh/E} !"%ekk!n"5 5#FMM#$6}n^jkkN*mmCLLY1G$HIG00CLLN*Q.A ^F1u&,Zi&8#H[1Dad!ee --UEN@V(WX --V(<=d##+Kwqr{+K(K(KabkG	(	"N*14FLL-VRLMFEslU:I%66G00A~'*f}&,,s##f+C#,,.(E)#CczqCsB 788  #,,,S#6d##+Kwqr{+K(K(KabkG..%z!25.w~~c"))#.MgM		&'>. 'c 2|ekk)S&AAA"444	 3 34RT[ \]^'$%.(NIu~(=(=c(B(H(HTW(XXX	 5  22s7|+"S=IG,D+KKK ,
 N .0q="S=9s?::N% 
'r   c                     U c  g [         R                  " [        U 5      5      nSR                  U5      nSU;   a   UR	                  S5      R	                  S5      $ U$ )Nr   r    r!   )r   r   r5   r@   rO   )r   d	formatteds      r   number_to_stringro      sR    yAAa I03y0@9C '',OiOr   )r   r7   rQ   rB   __all__r   r   r   r   r   r   r	   r
   r   r   ro   r*   r   r   <module>rq      se       	 	
  	 
 +04~lv EPPr   