+
    =ix                        ^ RI Ht ^ RIHt ^ RIHt ^ RIHtHtH	t	 ^ RI
t
^ RIHtHt RHR lt/ tRR	R
RRRRRR^	RRRRRRRRR^ /
t/ ^RR.b^RR.b^RR.b^RR.b^R R!.b^	R"R#.b^R$R%.b^R&R'.b^ RR.bRIR(R).bRJR*R+.bRKR,R-.bRLR.R/.bRMR0R1.bRNR2R3.bROR4R5.bRPR6R7.bt^R8R9.^R:R;.RQR<R=.RRR>R?./t ! R@ RA4      tRB tRC tRD tRE tRF tRG tR# )S    )Decimal)deepcopy)
SortedDict)warnfilterwarningsresetwarningsN)currentframegetfilec                    ^ p \        4       p Ve   \        V4      \        8w  d   V# VP                  pV^,          pK2     T u # ; i)an  Helper function to associate warnings with caller outside this module.

Args:
    best_guess: stack depth estimate in case the Python interpreter doesn't support stack introspection.
Returns:
    integer stack level for warnings.warn() function.

Note:
- Python 3.12 should simplify this process with 'skip_file_prefixes' once the path normalization bugs are fixed.
)r	   r
   __file__f_back)
best_guess
stacklevelframes   &  p/Users/tonyclaw/.openclaw/workspace/scripts/youtube-playlists/venv/lib/python3.14/site-packages/sigfig/sigfig.py_warn_stacklevelr      sM     J}( :!!LLE!OJs   $A  A   Aspacing皙?spacer decimal.	separator    ± cutoffprefixFexponentEround_by_sigfigsround_by_decimalsTgiven_sigfigsY
septillionZ
sextillionquintillionPquadrillionTtrillionGbillionMmillionkthousandm
thousandthu   μ	millionthn	billionthp
trillionthfquadrillionthaquintillionthzsextillionthyseptillionthhhundreddatendtenthc	hundredthc                   x   a  ] tR t^Ft o RtR tRR ltR tR tR t	R t
RR	 lt]R
 4       tR tR tR tRtV tR# )_Numbera+  
Private data structure for storing & manipulating numbers

Attributes:
    .map: - dict for number storage
          - maps 10's power (key) to numeric value (value)
          - i.e. 3.14 => .map = {0:3, -1: 1, -2: 4}
Attributes/Mehtods for inspection (getting values):
    .sign:     string of either '+' or '-', denoting sign of stored number
    .nan:      bool True/False depending on whether number is NaN
    .positive: bool True/False depending on number's sign
    .negative: bool True/False depending on number's sign
    .has_uncertainty: bool True/False depending on whether there is an associated uncertainty with this number
    .max_power(): returns integer corresponding to number's highest populated 10's power
    .min_power(): returns integer corresponding to number's lowest populated 10's power
    .decimate(dict, _Number, bool, bool): returns string of all digits in given format
        specifying spacing and non-standard decimal point, optional sign
        optionally embedded uncertainty, and optional leading/trailing zeros
    .output(type): returns number in given type
Methods for manipulation (changing the value):
    .set_sign(str): function used to change/set the number's sign by passing '-' or '+'
                    so that .positive, .negative, .sign don't need manual updating
    .increment_power_by(int): (de)increments all keys in .map by given value
    .round_by_decimals(int):  performs rounding operation to the given 10's power
    .prefixify(str):          converts to Scientific or Engineering notation with optional SI prefix
c                ~    V P                  R 4       RV n        RV n        \        4       V n        RV n        RV n        R# )+r   FN)set_signr   has_uncertaintyr   mapzeronanselfs   &r   __init___Number.__init__a   s4    c$<	    c                    VR8X  d   RV n         RV n        RV n        R# VR8X  d   RV n         RV n        RV n        R# \        R\	        ^4      R7       RV n         RV n        V P                  R4       R# )zsets the number's signrK   FT-z*sign must be "+" or "-", assuming positiver   N)negativepositivesignr   r   rL   )rR   r[   s   &&r   rL   _Number.set_signh   sf    3;!DM DMDIS[ DM!DMDI=JZ[\J]^!DM DMMM#rU   c                ,    \        V P                  4      # )zFreturns integer corresponding to number's highest populated 10's power)maxrN   rQ   s   &r   	max_power_Number.max_powerw       488}rU   c                ,    \        V P                  4      # )zEreturns integer corresponding to number's lowest populated 10's power)minrN   rQ   s   &r   	min_power_Number.min_powerz   ra   rU   c                    \        4       pV P                   F  pV P                  V,          W#V,           &   K!  	  W n        R# )z(de)increments all keys in .mapN)r   rN   )rR   r4   tmpkeys   &&  r   increment_power_by_Number.increment_power_by}   s/    l88C88C=CaL rU   c                   V) p\        V P                  4       ^ /4      p\        V^ /4      pV P                  4       p\        V P                  4       \        V) ^,
          R4      R4       FD  pWR8  d   V^ 8  g   WPP                  9  d   \        ^ 4       K-  TpV P                  V,          W5&   KF  	  W P                  4       ^,           8X  dR   V P                  V P                  4       ,          ^8  d   ^W2&   MRV n        \        V^ /4      pV P                  R4       MW P                  4       8  d'   RV n        \        V^ /4      pV P                  R4       MV^,
          V P                  9   dr   V P                  V^,
          ,          ^8  dS   W4;;,          ^,          uu&   TpW6,          ^
8X  d0   ^ W6&   V^,          pWc9  d   ^W6&   K&  W6;;,          ^,          uu&   K<  W0n        R# )z3performs rounding operation to the given 10's powerTrK   N)r   r_   rangerc   rN   floatrO   rL   )rR   decimals
last_powertmp_maplast_tmp_powerrh   	tmp_powers   &&     r   r    _Number.round_by_decimals   s   Y
dnn.23j!_-))3y1}b+A2FCC1H880Ca
 "%#xx} G )A--xx()Q.&'# 	$j^4c"..**DI *Q0GMM#a488+!9K0LPQ0Q#q(#&I$*%&"Q	+)*G&&!+&	=rU   Nc           
     V   V P                  4       pV P                  4       pV'       d   \        V^ 4      p\        V^ 4      pV P                  '       d   V'       g
   V^ 8  d   ^ p. pV'       d$   V P
                  '       d   VP                  R4       \        Wg^,
          R4       F  p	 VP                  \        V P                  V	,          4      4       YP                  4       8X  d:   T'       d2   TP                  RTP                  TRRR7      ,           R,           4       Y8w  g   K  T	^ 8X  d   TP                  TR,          4       K  YR,          ,          ^ 8X  g   K  TP                  TR	,          4       K  	  R
P                  V4      V,           #    TP                  R4        L; i)z
returns string of all digits in given format {spacing, spacer, decimal},
with unc=_Number for embedded uncertainty, and optional leading/trailing zeros & sign
rW   0(Fzeropaddingr[   )r   r   r   r   rl   )r_   rd   r^   rc   rO   rY   appendrm   strrN   decimatejoin)
rR   formatuncry   r[   unitstopbotoutputr6   s
   &&&&&&    r   r}   _Number.decimate   s7   
 nnnnc1+Cc1+C999SS1WCDMMMMM#s!GR(A#c$((1+./ NN$$c#,,v5u,"UUVYYZx6MM&"34	**a/MM&"23 ) wwv&&#c"s   (+FF(c                *    \        \        V 4      4      # )N)intrn   )nums   &r   _int_Number._int   s    5:rU   c                    RRRRRR/pV P                  VRR7      ;'       g    RpV\        8X  d   V P                  MTpV! V R	V P                  4        24      # )
zreturns number in given typer   r   r   r   r   F)ry   rv   r   )r}   r   r   rd   )rR   output_typeno_formattingr   s   &&  r   r   _Number.output   s^    "B"iEmmMum=DD#.##5dii;cU!DNN$4#5677rU   c                   V P                  4       VP                  4       8  d   R # \        V P                  4       V P                  4       ^,
          R4       F  pW!P                  9  d   V P                  V,          '       g   K.   R # V P                  V,          VP                  V,          8  d    R # V P                  V,          VP                  V,          8  g   K   R# 	  VP                  4       V P                  4       8  d   R# R# )TFrl   )r_   rm   rd   rN   )rR   otherr6   s   && r   __gt___Number.__gt__   s    >>eoo//t~~')9A)=rBA		!xx{{xx{UYYq\)xx{UYYq\) C ??t~~//rU   c                   RV n         ^ pVR8X  dE   V P                  4       pV\        V4      ,           V n         V P                  V) 4       W4) ,          pV# VR8X  d|   ^ pV P                  4       ^ 8  d   ^p\	        V P                  4       V,
          ^,          4      ^,          pV\        V4      ,           V n         V P                  V) 4       W4) ,          pV# VR9   dP   \        \        \        ,           4      pV P                  4       pV\        V4      8  d   WF9   d   EMuV^,          pK#  EMh\        pV P                  4       pV\        V4      ^,           8  ds   V ;P                   V\        V4      ,          ^ ,          ,          un         V P                  \        V4      ) 4       V\        V4      ) ,          pV\        V4      ,          pK  V\        V4      8  ds   V ;P                   V\        V4      ,          ^ ,          ,          un         V P                  \        V4      ) 4       V\        V4      ) ,          pV\        V4      ,          pK  ^ pV P                  4       ^ 8  d   ^p\	        V P                  4       V,
          ^,          4      ^,          pWd,          ^ ,          V P                   ,           V n         V P                  V) 4       W4) ,          pV# )zCconverts to Engineering/Scientific notation with optional SI prefixr   scieng)allminor)r   r_   r|   ri   r   r   _major_prefixes_minor_prefixesrd   rc   r^   )rR   r   r   power_shiftr6   p0prefixess   &&&    r   	prefixify_Number.prefixify   sC    U? A"SV+DK##QB'2Ku_B~~!#T^^%*A-.q0A"SV+DK##QB'2K''!//"ABH As8}$=Q % 'H Ac(mAo%xH6q99''X7H~-S]"c(m#xH6q99''X7H~-S]"B~~!#T^^%*A-.q0Ak!nt{{2#rrU   )rM   rN   rP   rY   rZ   r   r[   rO   )rK   )NTTr   )__name__
__module____qualname____firstlineno____doc__rS   rL   r_   rd   ri   r    r}   staticmethodr   r   r   r   __static_attributes____classdictcell__)__classdict__s   @r   rI   rI   F   sV     4-=\'8  82 2rU   rI   c                X   RR/p\        RF Uu. uF  q3V9   NK	  	  up4      '       d   VP                  R4      ;'       g+    VP                  R4      ;'       g    VP                  R4      pV'       g   \        R4       M6VR8X  d   \        4        M$\        4        \	        RV R	2\        ^4      R
7       RVR&   \        P                  \        \        \        \        R4      3p\        V ^ ,          4      VR&   \        V ^ ,          V4      '       g"   \        R\        V ^ ,          4       RV 24      h\        V ^ ,          4      VR&   \        V 4      ^8  d   \        V ^,          4      \         8X  d7   V ^,          VR&   VR,          ^8  d   \	        R\        ^4      R
7       ^VR&   MUV ^,          V ^,          8w  d#   \	        RV ^,           R2\        ^4      R
7       M\        V ^,          4      VR&   \        VR&   \        V 4      ^8  d4   \	        R\!        \        V 4      ^,
          4       R2\        ^4      R
7       \"         F  p\"        V,          W&&   K  	  0 RGmpV EF  pW,          pWg9  d   \	        R"V R#V 2\        ^4      R
7       K0  Wb9   d   V\"        9  d    VRH9   d   RRRR/p	Wi9   d	   W,          MTp VR!8X  d   Rp\        V\        P$                  4      '       g   \	        R$V R%2\        ^4      R
7       VRI9   d)   \!        V4      ^	8  d   \	        R&\        ^4      R
7       ^	pVR8X  d)   \!        V4      ^8  d   \	        R\        ^4      R
7       ^p\!        V4      W&&   EK  VRJ9   d$    W8X  g   Q h\        V4      VR&   \        VR&   EK;  VR 8X  d`   \        V4      \&        8X  g   VRK9   d   WV&   M3VRL9   d   R-VR &   M&0 RMmp
\	        R'V R#V R.V
 2\        ^4      R
7       EK  \        VR&   EK  VRN9   d   \        V4      W&&   \        VR&   EK  VR8X  d   \!        V4      VR&   \        VR&   EK  VRO9   d   VR/8X  d   R0VR&   RVR/&   EK  VR08X  d   R0VR&   MvV\(        \*        09   d   WR&   \        V ^ ,          4      VR&   MKVR18X  d    \(        VR&   \        V ^ ,          4      VR&   M%VR28X  d   \*        VR&   \        V ^ ,          4      VR&   \        V4      VR&   EK  VRP9   Edx   \        VR&   . RQOpR3. RROR6. RSOR7. RTOR8. RUOR9. RVOR+. RWOR,. RXOR:. RYO/pR;R<0p0 RZmpW9   dF   VR=,          pVR>8X  d   R:p\-        V4       F!  w  ppVV9   d   K  W,          V,          VV&   K#  	  EK  W9   d>   \-        V4       F+  w  ppVV9   d   V\"        9  d    W,          V,          VV&   K-  	  EK^  \        V\        4      '       d&   \/        W4      '       d   WR&   R V9   d   VR  EK  EK  W9   d   VR;8X  d	   R5VR&   EK  WR&   EK  \	        R?V Uu. uF  pVNK  	  upV Uu. uF  pVNK  	  up,            R@V 2\        ^4      R
7       \        V ^ ,          4      VR&   EK  WV&   EK  	  RV9   d!   RV9   d   \	        RA\        ^4      R
7       VR RV9   dP   \        R[ Uu. uF  pVV9   NK
  	  up4      '       d,   \	        RC\        ^4      R
7       R[ F  pVV9   g   K  VV K  	  RBV9   dU   RV9   g   RV9   d   \	        RD\        ^4      R
7       M,\0        RE,          '       d   VRB,          VR&   MVRB,          VR&   VRB \/        VR,          \        P2                  \        \        34      '       gz   / VR&   RV9   d   RV9  d   ^VR&   RV9   d   RV9  d   R4VR&   R\ FH  pVV9   d   VV,          pVV M&V\"        9   d   \"        V,          pM\0        V,          pWR,          V&   KJ  	  R] F9  pVV9   d   K  V\"        9   d   \"        V,          VV&   K)  \0        V,          VV&   K;  	  V# u upi    \	        R'T R#T R(\        T4       R)2\        ^4      R
7        EK  ; i   \	        R'T R#T R*2\        ^4      R
7        EK7  ; iu upi u upi u upi )^zPrivate function for use only in round() function:
Deciphers user intent based on given inputs along with preset defaults
which returns actionable and summarized useful variables in a dict.
reset_warningsFr   warningwarningsignoreTz>warnings argument expected to be True, False, or "once". Got ""rX   Nr   zInvalid input type of z, expecting 1 of r   sigfigsz8cannot have less that 1 significant figure, setting to 1zIgnoring 2nd argument "z(". invalid uncertainty, expecting numberuncertaintyzlast z argument(s) discarded/ignoredr   r   sro   rD   r   r   r   r   r   cropz unrecognized argument, skipping =zuse integer type for z	 argumentz'cutoff/crop cannot be < 9, setting to 9z	Ignoring z, invalid type of z, expecting integer typez'. invalid uncertainty, expecting numberr   r   r   z*, invalid prefix setting, expecting 1 of: external_bracketsbracketstuplelistEnglish,r   Frenchr   PDGDrakestd+-rN   :N   Nstazexpected format of z, ignoring format of zDCannot round by both sigfigs & decimals, ignoring decimal constraintarg2zCannot round by both uncertainty & decimals/sigfigs simultaneously, ignoring decimals &/or sigfigs.  Use seperate calls to round() function for seperate roundings.zRInvalid 2nd argument, ignoring. "sigfigs" or "decimals" given in keyword argumentsr   )r   r   r   >   rD   r   usepr   formtypestyler   r   r   r   r   r   r   r   ro   r   notationr   
separationr   r   >   rD   r   r   r   r   ro   >   r   r   >   r   r   >   r   r   major)r   r   >   FTr   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   	   Fu   #,###,###.## ± 0.#)r    r   r   c   Fu   # ### ###,## ± 0,##)r   r   r   r   r   Fu   #.###.###,## ± 0,##)r   r   r   r   #   F# ### ###.##(##))r   r   r   r      Fr   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   Fr   >   r   r   r   standard
scientificengineering)r   ro   r   >   r   r   r   )r   r   r   )anygetr   r   r   r   numbersNumberr|   r   rI   r   
isinstance	TypeError
_num_parselenr   _manual_settingsIntegralboolr   r   	enumerate
issubclass_default_settingsReal)argskwargsgivenwr   typesrh   keysval	shortcutsr   
propertiesformatsoutputs	notationsipropr8   oxs   &&                  r   _arguments_parser     s   
 u%E
!@A!@AK!@ABB**V$WW

9(=WWJAW8$_OOQRYQZZ[\iyz{i|}"&^^S'7DJ?EQ=E-d1gu%%0d1g?PQVPWXYYd1g&E%L
4yA~Q=C#AwE)Y!#O\lmn\op#$i !WQ*47)3[\iyz{i|}#-d1g#6E- #&E- 
4y1}uSTQ'((FGTdefTgh%c*
   sDk?3C5#?L\]^L_`<C'77EEYJ7I$'$4).#CC&="C!#w'7'7880Y?L\]^L_`,,SABO_`aObcC)#C1S`pqr`stC X
 ((uz"z'1#m$'*m$ H_CyD C+B$B c
(("'hPyQse+UV^U_`m}~  nA  B#&E- ))SEJ#&E- I"3xE)#&E- 66))%/k"-1)*
"%/k"%"%h'+DG}m$"'h'+DG}m$"&h'+DG}m$!$SE+\\#&E- bJ "Y"Z"Z"W"Z"U"U"UWG UmGVI"g%<C(4GAtu} "),q/E$K  5 (4GAtu}4D)D"),q/E$K	  5
 C&&:c+A+A'*m$u$h %$;)/E+&&)(O*w+?w!Aw+?gBVg1gBV+V*WWlmplqr  @P  QR  @S  T'+DG}m$#JY \ EjE1S`pqr`st*#;Z&[;ZaqEz;Z&["\"\ r'*	
 4Du}$K 4 u!4e  sC  DE  sF  G122$V}E) %fE*&MeM*W\\7G,LMMhu%!7 E)(%"7!E(O4Du}Dk$K))&t,'-$'(OD! 5 45=%%*40E$K+D1E$K 4 Lu BrCyQse+=d3i[H`an~  @A  oB  C  CuyQse+RS`pqr`sttT ,@BV '\s0   a B.a<a7"b3b"3b'+a47bc                  aaaaaa	 \        4       s^ s^ sRs^ s\        V 4      \        \        4      8X  d   \        V 4      # V f;   \        R\        ^4      R7       ^ \        P                  ^ &   R\        n        \        # W 8w  d0   \        R4       R\        n        V \        P                  R&   \        # \        V 4      p \        \        ^
4       Uu. uF  p\        V4      NK  	  up4      o\        . RO4      o	VVVVV	3R lpVVVVV	3R loVVVV	3R	 loVV3R
 loVV3R loV! V 4       \        P!                  4       pV\        P                  9   d9   \        P                  V,          ^ 8X  d   \        P                  V V^,          pKM  \        P                  '       g   ^ \        P                  ^ &   R\        n        \        # u upi )as  Private function for use only in round()'s _arguments_parse() function:
Translates given number of any type into returned _Number data structure

Parsing Algorythm [O(N)]:
- convert to string
- characters are analyzed sequentially in a KMP-like state graph. ie:
   number: -325.7854E-5 
   state:  ABBBBCCCCDEE
- ValueError is raised if input number cannot be deciphered
F%no number provided, assuming zero (0)rX   Tz!given input is not a number (NaN)NaNc                   < \         ^,          s V '       d   V R9   d7   \        R\        ^4      R7       ^ \        P                  ^ &   R\        n        R# V ^ ,          S9   dF   \        R\        ^4      R7       ^ \        P                  ^ &   R\        n        S! V R,          4       R# V ^ ,          R9   d.   \        P                  V ^ ,          4       S! V R,          4       R# V ^ ,          R9   d   S! V R,          4       R# V ^ ,          S9   dG   \        ^,          s\        V ^ ,          4      \        P                  \        ) &   S! V R,          4       R# \        R	V ^ ,           R
\          R24      h)   z.-+r   rX   TNr   NNr   r   z)parsing failed: invalid input Character "" (position z
, state A))
r   r   r   numberrN   rO   rL   r4   r   
ValueErrorr   BCDdigits	exponentss   &r   A_num_parse.<locals>.A  s   	QcUl8EUVWEXYFJJqMFKVy 8EUVWEXYFJJqMFKc"gJVt^OOCF#c"gJVs]c"gJVvFA Q[FJJrNc"gJHQP\]^\__ijkkrU   c                 *  < \         ^,          s V '       g   \        P                  \        4       R# V ^ ,          S9   d+   \        P                  \        4       S! V R,          4       R# V ^ ,          R9   d-   \        P                  \        4       ^ sS! V R,          4       R# V ^ ,          S9   dG   \        ^,          s\	        V ^ ,          4      \        P
                  \        ) &   S! V R,          4       R# \        RV ^ ,           R\          R24      h)r   Nr   r   #parsing failed: invalid Character "r   z
, state B))r   r   ri   r4   r   rN   r   r   s   &r   r   _num_parse.<locals>.B  s    	Q%%a(Vy %%a(c"gJVs]%%a(Ac"gJVvFA Q[FJJrNc"gJB3q6(,WXVYYcdeerU   c                 R  < \         ^,          s V '       g   R# V ^ ,          S9   d   S! V R,          4       R# V ^ ,          S9   dG   \        ^,          s\        V ^ ,          4      \        P                  \        ) &   S! V R,          4       R# \        RV ^ ,           R\          R24      h)r   Nr   r  r   z
, state C))r   r4   r   r   rN   r   )r   r   r   r   r   s   &r   r   _num_parse.<locals>.C)  s    	QVy c"gJVvFA Q[FJJrNc"gJB3q6(,WXVYYcdeerU   c                   < \         ^,          s V '       g   \        R\        ^4      R7       R# V ^ ,          R9   dI   V ^ ,          R8X  d   RsV R,          '       g   \        R\        ^4      R7       ^ sS! V R,          4       R# V ^ ,          S9   d$   \        V ^ ,          4      sS! V R,          4       R# \        RV ^ ,           R	\          R
24      h)r   z"exponent expected but not providedrX   Nr   rW   Tr   invalid Character "r   z
, state D))r   r   r   negative_expexpr   r   )r   r   r   s   &r   r   _num_parse.<locals>.D6  s     	
Q5BRSTBUVVt^1v}#r779FVWXFYZCc"gJVvc!f+Cc"gJ23q6(,qcTUUrU   c                 R  < \         ^,          s V '       g3   ^p\        '       d   Rp\        P                  V\        ,          4       R# V ^ ,          S9   d6   ^
\        ,          \        V ^ ,          4      ,           sS! V R,          4       R# \        RV ^ ,           R\          R24      h)r   Nr   r	  r   z
, state E)rl   )r   r
  r   ri   r  r   r   )r   r[   r   r   s   & r   r   _num_parse.<locals>.EI  s    	QD|%%d3h/VvS&3s1v;&Cc"gJ23q6(,qcTUUrU   )r   er   rD   Qq)rI   r   r   r4   r
  r  r   r   r   r   rN   rO   rP   r|   setrm   r_   )
r   r:   r  r6   r   r   r   r   r   r   s
   &   @@@@@@r   r   r     sd    YF	A	AL
CCyDL }
{4AQRSATU

1
z01


5
c(C%),)Q#a&),-F23Il l0f f&f fV&V cFA
vzz/fjjmq0JJqM	Q:::

1MQ -s   Gc            	        V '       g   \        R\        ^4      R7       R# \        W4      pVR,          pVP                  '       d   VP                  R,          # RV9   d   VP                  VR,          4       EMRV9   d   VR,          \        VP                  4      8  d7   \        VR,           R\        VP                  4       R	2\        ^4      R7       VP                  4       VR,          ,
          ^,           pVP                  V) 4       \        VP                  4      VR,          8  d   VP                  VP                  4        K>  EMDR
V9   Ed=   RVn	        RV9   d   \        VR,          4      pM8R\        9   d   \        \        R,          4      pM\        \        R,          4      p\        VR
,          \        V4      RR7      p\        VR,           \        VP                  4       4      ,           4      pWg8  dp   \        VR
,          \        V4      ^,
          RR7      pVP                  VP                  4       ,          ^8X  d%   ^ VP                  VP                  4       ^,
          &   VP                  VP                  4       ) 4       VR,          '       d9   VP                  VR,          VR,          4      pR
V9   d   XP!                  V4       VR,          '       d   \#        4        \%        VR,          \&        P(                  \*        34      '       d   RV9   d   VR,          \,        \.        09   dk   R
V9  d'   VR,          ! VP1                  VR,          4      .4      # VR,          ! VP1                  VR,          4      XP1                  VR,          4      .4      # VP1                  VR,          4      # RV9   d   VR,          R8X  d   V# R
V9   dE   VR,          R8X  d7   XP                  4       ^ 8  d"   RV9  d   VP3                  VR,          VR7      # VP3                  VR,          4      p	VR,          '       d   VP4                  MRp
RV9   df   VR,          \.        \,        09   dN   R
V9   d1   VR,          ! W,           XP3                  VR,          RV
R7      .4      # VR,          ! W,           .4      # R
V9   Ed   VR,          R8X  dM   XP                  4       ^ 8  d8   V	RVP3                  VR,          RR7      ,           R,           ,          p	W,           # VR,          R8X  d9   V	RXP3                  VR,          RRR 7      ,           R,           ,          p	W,           # VR,          '       d!   VR,          R!9  d   WP4                  ,          p	WR,          XP3                  VR,          RR7      ,           ,          p	VR,          R8X  d   V
'       d   RV	 R2p	W,           # )"u  
round a given number to either
    - a given number of significant figures/significant digits,
    - a given number of decimals, or
    - a given uncertainty
and optionally output the number with given formatting along with its uncertainty

Key usage examples:
    round('2.675', sigfigs=2) => '2.7'
    round(2.675, decimals=2)  =>  2.68
    round('2.675', '0.00197') => '2.675 ± 0.002'
    round('123456.789099', '-1.15E-4', output='Drake') => '123 456.789 10(12)

For detailed usage instructions see https://pypi.org/project/sigfig/
z(no input number given, nothing to returnrX   Nr   r   ro   r   z5 significant figures requested from number with only z significant figuresr   Tr   rN   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   F)r[   r   rw   )r[   rz   rx   >   Tr   r   r   )r   r   r   rP   rN   r    r   r_   rd   rM   r|   r   r   roundr   r   ri   r   r   r   r   r   r   r   r   r}   r   )r   r   r   r   rp   r   r   cutr   r   r   s   *,         r   r  r  e  s     7DTUVDWXT*E
,C
wwwwwu~UeJ/0	e	c#''l*#$$YZ]^a^e^eZfYgg{|+A. ]]_uY'77!;
zk*#''lU9--( .	%	"ux)F)))(34F*845FE-(#f+eL#CMMO(<<=9m,c&k!mERCwws}}'1,/0!+,s}}./XmmE(OU:5FGE!"";/%&(ABBuxUDM!AE)X

53G(H'IJJ?CJJu]/C$D$'JJu]/C$D$F G Gzz%.//	U	uX%7
%"4
"Bs}}YZGZ_rz_||E(O|55\\%/*F//CJJrE5U8_u=E!?FNCLLxW\diL4j#kllX/00+!0Cc#,,uXU,CCCGGF > ;:-c#,,uXEPU,VVWZZZF > X5?:Y#Y**$K(3<<he<+TTTFX$&5VHA>rU   c                     \        R\        \        ^4      R7       RRR^RRR\        /pTpR	V9   d$   VR	,          R
8X  d   RVR&   MVR	,          VR&   VR	 RV9   d   VR;;,          ^,          uu&   V F  pW,          W4&   K  	  \	        V / VB # ):Depreciated version of round() function with limited scope?Depreciated Usage: Migrate code to use round() function insteadrX   r   r   r   r   r   r   r   	plusminus +/- r   )r   DeprecationWarningr   r|   r  )r   r   defaultsfinal_parametersrh   s   *,   r   rounditr    s    	JL^k{|}k~#y![*mVYZH&>[(")F;"(.F;6Nv! & $+*++rU   c                 D   \        R\        \        ^4      R7       R\        /pTpRV9   d   VR,          R8X  d	   RVR&   VR RV9   d   VR;;,          ^,          uu&   V F  pW,          W4&   K  	  \	        V  Uu. uF  p\        V4      NK  	  up/ VB ^ ,          # u upi )	r  r  rX   r   r   r  r  r   r   )r   r  r   r   r  r|   )r   r   r  r  rh   args   *,    r   	round_uncr!    s    	JL^k{|}k~u~HF6Nk9%{6Nv! & t,t3s8t,A0@A!DD,s   ;Bc                d    \        R\        \        ^4      R7       \        \	        V 4      VR7      # )r  r  rX   )r   )r   r  r   r  r|   )r   r   s   &&r   round_sfr#    s(    	JL^k{|}k~VW--rU   )   iiiiiiirl   )r   r   copyr   sortedcontainersr   r   r   r   r   r   inspectr	   r
   r   r   r   r   r   rI   r   r   r  r  r!  r#   rU   r   <module>r+     s     ' 8 8  ),  sbsaeQ
  l l  m  m	 
 j  Y  Y  Z  2w  l  {  k  #|	  #	  #	   #~	! " #~	# & Ye}gk	Q QfADHT\|, E.rU   