
    ei                     h    d dl Z d dlZd dlZd dlZg dZd ZdZdZdZdZ	dZ
dZdZdZede	efd	Zd
 ZdS )    N)
TRUNCATEROUNDROUND_UP
ROUND_DOWNDECIMAL_PLACESSIGNIFICANT_DIGITS	TICK_SIZE
NO_PADDINGPAD_WITH_ZEROdecimal_to_precision                  c                 6   |
J d            t          |t                    rt          |          }t          |t                    s>t          |t          j                  s$t          |t
          j                  s
J d            |t          k    r|dk    s
J d            nt          |t
          j                  sJ |t          t          fv sJ |t          t          t          fv sJ |t          t          fv sJ t          j                    }|t          k    rt          |j        dz
  |          }d|j        t          j        <   t          j        |_        t          j        t          |                     t          j        t          |                    }d                              }d }d }	|dk     r|t          k    rt-          d	           |	|          }
|t          k    rCd                    |
t          j        t/          |
z  |dt          |                    z            S |t          k    rt/          |
z  z
  |dt          |          S |t          k    rMt1                    |z  }|dk    r]|t          k    r6dk    r||dz  k    r	|z
  |z   n:|z
  n4||dz  k    r	|z   |z
  n"|z   n|t          k    rdk     r|z   n|z
  t3          j        d
dd                    |                                        d          }t9          |          dk    rt9          |d                   }nCt3          j        d
|d                   }|d}n#t9          |                    d                     }t/          d                              t          |t          |          S |t          k    r1|t          k    r2d                                         |	|                              }n|t          k    r|                                 z
  dz
  } |	|          }|dk     rT|d |         }|t          j        |r|nd          z  }||z   }d                    t          ||ffd                    }n(d                                        |                    }|!                    d          r+tE          d |dd          D                       r
|dd          }nG|t          k    r;|t          k    r1d|v r|                    d          n|df\  }}|dz   |d |         z   }n|t          k    r|dk    rdS d|v r|#                    d          nt9          |          }|                                 z
  }||z   }||k    r|dz  }|t9          |$                    dd                    k    r|}n|d |         %                    |d          }|!                    d          r+tE          d |dd          D                       r
|dd          }|&                    d          }|t          k    r.d|v r(|&                    d          &                    d          n|S |t          k    r%d|v r|t          k    r4|                    d          \  }}|dz   |%                    |d          z   S |t          k    r}t9          tO          tQ          j)        d |                              }d||d          v r|dz  }|d |         ||d          &                    d          %                    |d          z   S d S |t          k    r/|t9          |          k    r|dz   |t9          |          z
  dz  z   S n|t          k    r|dk    r|dz   |dz  z   S |S d S )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                 2    t          j        d          |  z  S )N10)decimalDecimalxs    \/var/www/html/volatility/venv/lib/python3.11/site-packages/ccxt/base/decimal_to_precision.pypower_of_10z)decimal_to_precision.<locals>.power_of_10C   s    t$$!,,    z7TICK_SIZE cant be used with negative numPrecisionDigitsz0+$ .r   0c                 (    t          | z
            S )N)abs)r   decs    r   <lambda>z&decimal_to_precision.<locals>.<lambda>y   s    #aRUg,, r   )keyz-0c              3      K   | ]}|d v V  	dS z0.N .0cs     r   	<genexpr>z'decimal_to_precision.<locals>.<genexpr>|   &      +K+K!AI+K+K+K+K+K+Kr   c              3      K   | ]}|d v V  	dS r'   r(   r)   s     r   r,   z'decimal_to_precision.<locals>.<genexpr>   r-   r   c                     | dk    p| dk    S )Nr   r    r(   r   s    r   r$   z&decimal_to_precision.<locals>.<lambda>   s    a3h>R!s( r   )*
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+Q  `U_`ikrk{U|U|  `  `  `  `  `  `	!!1}}}g}}}})W%566666Xu-----^-?KKKKKJ66666  ""G	!!q()44	 (,GM'#$,G
/#a&&
!
!COC	NN33M]]3FG- - - 1}}I%%VWWW [++
E!!==go>RSVYcScertu  xF  HT  ?U  ?U  /V  /V  "V  W  W  Wh&&'cJ.>(>qR`bnooo	!!c((]*a<<%%77-!"333!Gmm;!Gm-!"333!Gmm;!Gm(**77-CC-Cvr6==#?#?@@FFsKKu::>>aMMMMIfeAh//E} !"%ekk!nn"5"5 5#FMM#$6$6}n^jkkkN**mmCLLY1G1G$H$HIIGG000CLLNN*Q.A [^^F1uu&,ZiZ&8#H[1d1D1Dad!e!ee --UEN@V@V@V@V(W(W(WXX --V(<(<==d## 	"+K+Kwqrr{+K+K+K(K(K 	"abbkG	(	"	"N**14FLL---VRLMFEslU:I:%66GG000A~~s'*f}}&,,s####f++C#,,..(E)#CczzqCsB 7 78888  #,,,S#66d## 	"+K+Kwqrr{+K+K+K(K(K 	"abbkG..%%z!!25..w~~c""))#...gM		&	&'>>.. 'c 2 2|ekk)S&A&AAA"4444	 34R4RT[ \ \]]^^'$%%.((NIuu~(=(=c(B(B(H(HTW(X(XXX	 54  222s7||++"S=IG,D+KKK ,.00q=="S=9s?::N% 
'	&r   c                     | d S t          j        t          |                     }d                    |          }d|v r(|                    d                              d          n|S )Nr   r   r    )r   r   r1   r<   rK   )r   d	formatteds      r   number_to_stringrk      sc    ytAAa  I03y0@0@9C  '',,,iOr   )r   r3   rM   r>   __all__r   r   r   r   r   r   r	   r
   r   r   rk   r(   r   r   <module>rm      s          				   	
  	 
 +04~lv E E E EPP P P P Pr   