
    (phK                     R    S SK Jr  S SKrS SKJrJrJrJrJr  S SK	r
 " S S\5      rg)    )DecimalN)assert_assert_almost_equalassert_allcloseassert_equalassert_raisesc                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestFinancial   c                     [         R                  " / SQ5      n[        [        R                  " [        R
                  " U5      U5      SSSS9  g )N)ici  i@  .  0u  r   g|=)atolrtol)numpyarrayr   npfnpvirr)self	cashflowss     W/var/www/html/venv/lib/python3.13/site-packages/numpy_financial/tests/test_financial.pytest_npv_irr_congruence%TestFinancial.test_npv_irr_congruence   s8     KK BC		 2I>"	,    c                 L    [        [        R                  " SSSS5      SS5        g )N
   r   T'  gͪV?   )r   r   rater   s    r   	test_rateTestFinancial.test_rate   s    CHHRE5961Er   c                     [         R                  " [        S5      [        S5      [        S5      [        S5      5      n[        [        S5      U5        g )N100-350010000z0.1106908537142689284704528100)r   r!   r   r   )r   r!   s     r   test_rate_decimalTestFinancial.test_rate_decimal   s;    xxws|WW5E(*W=>Er   c                 $   / SQn[        [        R                  " U5      SS5        / SQn[        [        R                  " U5      SS5        / SQn[        [        R                  " U5      SS5        / SQn[        [        R                  " U5      S	S5        / S
Qn[        [        R                  " U5      SS5        / SQn[        [        R                  " U5      SS5        / SQn[        [        R                  " U5      [        R
                  5        g )N)i:  ia  i  iȯ  i`  g<,Ԫ?   )r   r   J   g r)r/   '   ;   7      gs?)r/   d   r   ig&S)r/   r5   r      gTƯ?)g      %@   ir8   glV}?))r   r   r   r   r   nan)r   vs     r   test_irrTestFinancial.test_irr   s    8CGGAJ2CGGAJ3"CGGAJ3CGGAJ3CGGAJ3 CGGAJ2 SWWQZ+r   c                 L    [        [        R                  " SSSS5      SS5        g )NQ?r4   r   r   gQ	r.   )r   r   pvr"   s    r   test_pvTestFinancial.test_pv1   s    CFF4UA6
AFr   c           
          [        [        R                  " [        S5      [        S5      [        S5      [        S5      5      [        S5      5        g )N0.072012000r'   z-127128.1709461939327295222005)r   r   rB   r   r"   s    r   test_pv_decimalTestFinancial.test_pv_decimal4   s9    SVVGFOWT]GG<L#CL*=>	@r   c           	      L    [        [        R                  " SSSSS5      S5        g )N333333?r4   0r   g?%@)r   r   fvr"   s    r   test_fvTestFinancial.test_fv9   s    SVVE2ua35GHr   c           	          [        [        R                  " [        S5      [        S5      [        S5      SS5      [        S5      5        g )N0.075rG   -2000r   z86609.36267304300040536731624)r   r   rN   r   r"   s    r   test_fv_decimalTestFinancial.test_fv_decimal<   s7    SVVGG,gdmWW=Mq"<=	?r   c                 *   [         R                  " SSS5      nSn[        X5        [         R                  " SSS5      nSn[        X5        [         R                  " SS/SS//S	S
/SS/5      n[        R                  " SS/SS//5      n[        X5        g )NO贁N{?<   r-   gu Us        g     @og?g333333?        i N  g.R\UdgngC)r   pmtr   r   r   r   restgts      r   test_pmtTestFinancial.test_pmtA   s    ggi/!ggc65)! ggSzC:.Q$GkkJ
3j*5MNO!r   c                    [         R                  " [        S5      [        S5      -  SS5      n[        S5      n[        X5        [         R                  " [        S5      [        S5      [        S5      5      nS	n[        X5        [         R                  " [        S5      [        S
5      /[        S5      [        S
5      //[        S5      [        S5      /[        S5      [        S5      /5      n[        R
                  " [        S5      [        S5      /[        S5      [        S5      //5      n[        US   S   US   S   5        [        US   S   US   S   5        [        US   S   US   S   5        [        US   S   US   S   5        g )N0.0812rX   r-   z-304.1459143262052370338701494r'   6015000iz0.8z0.33200020000z-166.6666666666666666666666667z-19311.25827814569536423841060z-626.9081401700757748402586600r   r8   )r   r]   r   r   r   r   r^   s      r   test_pmt_decimalTestFinancial.test_pmt_decimalO   se   gggfo5vuE67SgggclGDM773CDS gggen579t}gcl3v(89; kkG$DE#$DEG#$DE#$DEGH I 	SVAYAq	*SVAYAq	*SVAYAq	*SVAYAq	*r   c           
      t    [        [        R                  " [        R                  " SSSS5      S5      S5        g )N?r8   rX     r.   g     2r   r   roundr   ppmtr"   s    r   	test_ppmtTestFinancial.test_ppmtk   s&    U[[(Ar5!A1EwOr   c           
          [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      5      [        S5      5        g )N0.1re   1rf   55000z-710.2541257864217612489830917)r   r   rr   r   r"   s    r   test_ppmt_decimalTestFinancial.test_ppmt_decimaln   sB    SXXgenwt}<gcl%dmWW-=?=>	@r   c           
      t    [        [        R                  " [        R                  " SSSS5      S5      S5        g )Ng:m?r8   rX   l    d(	    gprp   r"   s    r   test_ppmt_special_rate$TestFinancial.test_ppmt_special_rateu   s)    U[[)QK!H!L(	*r   c           
          S n[        [        U5        [        [        R                  " [        S5      [        S5      -  SS[        S5      5      [        S5      5        g )Nc                      [        [        [        R                  " [	        S5      [	        S5      -  SS[	        S5      5      S5      [	        S5      5        g )N0.23re   r8   rX   10000000000r|   z-90238044.232277036)r   rq   r   rr   r    r   r   raise_error_because_not_equalSTestFinancial.test_ppmt_special_rate_decimal.<locals>.raise_error_because_not_equal}   sD    chhwv>2&}5789;-.0r   r   re   r8   rX   r   z-90238044.2322778884413969909)r   AssertionErrorr   r   rr   r   )r   r   s     r   test_ppmt_special_rate_decimal,TestFinancial.test_ppmt_special_rate_decimaly   sK    	0 	n&CDSXXgfo=q"%m46<=	?r   c           
      t    [        [        R                  " [        R                  " SSSS5      S5      S5        g )Nrn   r8      r\   r.   gQ0)r   r   rq   r   ipmtr"   s    r   	test_ipmtTestFinancial.test_ipmt   s)    EKK1b$(GK"	$r   c                     [         R                  " [        S5      [        S5      -  SSS5      n[        UR                  S   [        S5      5        g )Nrv   re   r8   r   r\   r   z-16.66666666666666666666666667)r   r   r   r   flat)r   results     r   test_ipmt_decimalTestFinancial.test_ipmt_decimal   s;    '%.74=8!RFV[[^W-M%NOr   c                 L    [        [        R                  " SSSS5      SS5        g )NrL   rM   r        j@g
ףp=5@r.   r   r   nperr"   s    r   	test_nperTestFinancial.test_nper   s     CHHUE1g>!1	&r   c                 L    [        [        R                  " SSSS5      SS5        g )NrY   rM   r   r   g      I@r8   r   r"   s    r   
test_nper2TestFinancial.test_nper2   s     CHHS%G< !	%r   c                 L    [        [        R                  " S/ SQ5      SS5        g )N皙?ihi  i	  i  i  ip  g)\^@r.   )r   r   r   r"   s    r   test_npvTestFinancial.test_npv   s    GGD@AA	r   c                 n    [        [        R                  " [        S5      / SQ5      [        S5      5        g )N0.05r   z122.894854950942692161628715)r   r   r   r   r"   s    r   test_npv_decimalTestFinancial.test_npv_decimal   s&    GGGFO%KL23	5r   c           	      `   / SQn[        [        R                  " USS5      SS5        / SQn[        [        R                  " USS5      S	S
5        / SQn[        [        R                  " USS5      SS5        / SQn[        [        R
                  " [        R                  " USS5      5      5        g )N)
ili   r   X  r   r   r   i  i  g{Gz?g)\(?g镲?r    )i@+X  r   R  鈐  鰳  g?gQ?gd##?   )r5      ii,  i8r   gQ?g8gDio?)r   r   r   r   r   )r   r   mirrr   r   isnanr   vals     r   	test_mirrTestFinancial.test_mirr   s    DCHHS$6B:CHHS$5xC(CHHS$5vqA1CHHS$567r   c                    [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      /
n[        [        R                  " U[        S5      [        S5      5      [        S	5      5        [        S
5      [        S5      [        S5      [        S5      [        S5      [        S5      /n[        [        R                  " U[        S5      [        S5      5      [        S5      5        [        S5      [        S5      [        S5      [        S5      [        S5      /n[        [        R                  " U[        S5      [        S5      5      [        S5      5        [        S5      [        S5      [        S5      [        S5      [        S5      /n[	        [
        R                  " [        R                  " U[        S5      [        S5      5      5      5        g )Nz-4500z-8008006007003000rd   z0.055z0.066597175031553548874239618z-1200003900030000210003700046000z0.10z0.12z0.126094130365905145828421880100200z-50300z-200r   z0.06z0.342823387842176663647819868)r   r   r   r   r   r   r   r   s     r   test_mirr_decimalTestFinancial.test_mirr_decimal   sx   w'%.u~wu~wu~wu~u~wu~wv@ 	SXXc76?GG4DE<=	? y!77#3WW5Ew!1773CESXXc76?GFOD<=	? u~wu~wu~u~wv0SXXc76?GFOD<=	? w!1773Cw!13CHHS'&/76?KLMr   c                 	   [        [        R                  " SSSSS5      [        R                  " SSSSS5      5        [        [        R                  " SSSS5      [        R                  " SSSSS5      5        [        [        R                  " SSSSS5      [        R                  " SSSSS5      5        [        [        R                  " S	SS
SS5      [        R                  " S	SS
SS5      5        [        [        R                  " S	SS
S5      [        R                  " S	SS
SS5      5        [        [        R                  " S	SS
SS5      [        R                  " S	SS
SS5      5        [        [        R                  " SSSSS5      [        R                  " SSSSS5      5        [        [        R                  " SSSS5      [        R                  " SSSSS5      5        [        [        R                  " SSSSS5      [        R                  " SSSSS5      5        [        [        R
                  " SSSSS5      [        R
                  " SSSSS5      5        [        [        R
                  " SSSS5      [        R
                  " SSSSS5      5        [        [        R
                  " SSSSS5      [        R
                  " SSSSS5      5        [        [        R                  " SSSSSS5      [        R                  " SSSSSS5      5        [        [        R                  " SSSSS5      [        R                  " SSSSSS5      5        [        [        R                  " SSSSSS5      [        R                  " SSSSSS5      5        [        [        R                  " SSSSSS5      [        R                  " SSSSSS5      5        [        [        R                  " SSSSS5      [        R                  " SSSSSS5      5        [        [        R                  " SSSSSS5      [        R                  " SSSSSS5      5        [        [        R                  " SSSSS5      [        R                  " SSSSS5      5        [        [        R                  " SSSS5      [        R                  " SSSSS5      5        [        [        R                  " SSSSS5      [        R                  " SSSSS5      5        g )Nr   r4   r   r   r8   beginendr   rA   r   rL   rM   rW   rX   g     L@rn   ro   r   r\   r   )	r   r   r!   rB   rN   r]   rr   r   r   r"   s    r   	test_whenTestFinancial.test_when   s   SXXb"eUA6XXb"eUG<	> 	SXXb"eU3XXb"eUE:	<SXXb"eUA6XXb"eUE:	< 	SVVD"eQ2VVD"eQ8	: 	SVVD"eQ/VVD"eQ6	8SVVD"eQ2VVD"eQ6	8 	SVVE2ua3VVE2ua9	; 	SVVE2ua0VVE2ua7	9SVVE2ua3VVE2ua7	9 	SWWY1=WWY7C	E 	SWWY:WWY5A	CSWWY1=WWY5A	C 	SXXh2ua;XXh2uaA	C 	SXXh2ua8XXh2ua?	ASXXh2ua;XXh2ua?	A 	SXXh2tQ:XXh2tQ@	B 	SXXh2tQ7XXh2tQ>	@SXXh2tQ:XXh2tQ>	@ 	SXXeUAw:XXeUAw@	B 	SXXeUAw7XXeUAw>	@SXXeUAw:XXeUAw>	@r   c                 ,   [        [        R                  " [        S5      [        S5      [        S5      [        S5      [        S5      5      [        R                  " [        S5      [        S5      [        S5      [        S5      S5      5        [        [        R                  " [        S5      [        S5      [        S5      [        S5      5      [        R                  " [        S5      [        S5      [        S5      [        S5      S5      5        [        [        R                  " [        S5      [        S5      [        S5      [        S5      [        S5      5      [        R                  " [        S5      [        S5      [        S5      [        S5      S5      5        [        [        R                  " [        S	5      [        S5      [        S
5      [        S5      [        S5      5      [        R                  " [        S	5      [        S5      [        S
5      [        S5      S5      5        [        [        R                  " [        S	5      [        S5      [        S
5      [        S5      5      [        R                  " [        S	5      [        S5      [        S
5      [        S5      S5      5        [        [        R                  " [        S	5      [        S5      [        S
5      [        S5      [        S5      5      [        R                  " [        S	5      [        S5      [        S
5      [        S5      S5      5        [        [        R
                  " [        S5      [        S5      [        S5      [        S5      [        S5      5      [        R
                  " [        S5      [        S5      [        S5      [        S5      S5      5        [        [        R
                  " [        S5      [        S5      [        S5      [        S5      5      [        R
                  " [        S5      [        S5      [        S5      [        S5      S5      5        [        [        R
                  " [        S5      [        S5      [        S5      [        S5      [        S5      5      [        R
                  " [        S5      [        S5      [        S5      [        S5      S5      5        [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      -  [        S5      [        S5      [        S5      5      [        R                  " [        S5      [        S5      -  [        S5      [        S5      -  [        S5      [        S5      S5      5        [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      -  [        S5      [        S5      5      [        R                  " [        S5      [        S5      -  [        S5      [        S5      -  [        S5      [        S5      S5      5        [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      -  [        S5      [        S5      [        S5      5      [        R                  " [        S5      [        S5      -  [        S5      [        S5      -  [        S5      [        S5      S5      5        [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      [        S5      5      [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      S5      5        [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      5      [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      S5      5        [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      [        S5      5      [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      S5      5        [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      [        S5      5      R                  S   [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      S5      R                  S   5        [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      5      R                  S   [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      S5      R                  S   5        [        [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      [        S5      5      R                  S   [        R                  " [        S5      [        S5      -  [        S5      [        S5      [        S5      [        S5      S5      R                  S   5        g)zG
Test that decimals are still supported if the when argument is passed
r&   rG   r(   r)   rw   r   r   r'   rF   rH   rR   rS   rd   re   5z15000.rv   rf   rx   24ri   r   N)
r   r   r!   r   rB   rN   r]   rr   r   r   r"   s    r   test_decimal_with_when$TestFinancial.test_decimal_with_when  s   
 	SXXgdmWT]GG<L%g.>XXgdmWT]GG<L%g.9	:
 	SXXgdmWT]GG<L%g.0XXgdmWT]GG<L%g.7	8 	SXXgdmWT]GG<L%g.>XXgdmWT]GG<L%g.7	8 	SVVGFOWT]GG<L#CL'#,8VVGFOWT]GG<L#CL'3	4
 	SVVGFOWT]GG<L#CL*VVGFOWT]GG<L#CL%1	2 	SVVGFOWT]GG<L#CL'#,8VVGFOWT]GG<L#CL%1	2 	SVVGG,gdmWW=M#CL'#,8VVGG,gdmWW=M#CL'3	4
 	SVVGG,gdmWW=M#CL*VVGG,gdmWW=M#CL%1	2 	SVVGG,gdmWW=M#CL'#,8VVGG,gdmWW=M#CL%1	2 	SWWWV_wt}<$S\GDM978;L$S\73<9 WWWV_wt}<$S\GDM978;L$S\74	5 	SWWWV_wt}<$S\GDM978;L$S\+ WWWV_wt}<$S\GDM978;L$S\52	3 	SWWWV_wt}<$S\GDM978;L$S\73<9 WWWV_wt}<$S\GDM978;L$S\52	3 	SXXgenwt}<%clGDM77;K%clGCL: XXgenwt}<gcl%dmWW-=%clG5	6 	SXXgenwt}<gcl%dmWW-=ws|MXXgenwt}<gcl%dmWW-=ws|#%	&
 	SXXgenwt}<gcl%dmWW-=ws|%cl, XXgenwt}<gcl%dmWW-=ws|#%	& 	SXXgenwt}<gcl%dmWV_%clGCL::>$qB XXgenwt}<gcl%dmWV_%clG559T!=	> 	SXXgenwt}<gcl%dmWV_%cl,,0D4 XXgenwt}<gcl%dmWV_%clE3374;	< 	SXXgenwt}<gcl%dmWV_%clGCL::>$qB XXgenwt}<gcl%dmWV_%clE3374;	<r   c                    [        [        R                  " SSSSSS/5      SS/S5        [        [        R                  " S	[	        [        S
5      5      SS5      / SQS5        [        [        R                  " S	[	        [        S
5      5      SS5      / SQS5        [        [        R                  " S	[	        [        S
5      5      SSS/ SQ5      / SQS5        g )NrL   rM   r   r   r8   g%v5@g^4@r    rn      r   r\   )ghl;J1g0gRV	0gQS.gD-)hurRGRg{]7S}D~8Sg_saaS)r   r   r8   r   r   )r   r   r   r   r   )r   r   r   r   listrangerr   r"   s    r   test_broadcastTestFinancial.test_broadcasts  s    CHHUE1g1vF'5q	: 	CHHXtE!H~r4H9:;	= 	CHHXtE!H~r4H9:;	= 	CHHXtE!H~r4%>@9:;	=r   c                    [        [        R                  " [        S5      [        S5      -  [	        [        S5      5      [        S5      [        S5      5      [        S5      [        S5      [        S5      [        S	5      [        S
5      /S5        [        [        R                  " [        S5      [        S5      -  [	        [        S5      5      [        S5      [        S5      5      [        S5      [        S5      [        S5      [        S5      [        S5      /S5        [        [        R                  " [        S5      [        S5      -  [	        [        S5      5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      SS/5      [        S5      [        S5      [        S5      [        S5      [        S5      /S5        g )Nrv   re   r   r   ri   z-17.29165168z-16.66666667z-16.03647345z-15.40102862z-14.76028842r    z
-74.998201z-75.62318601z-76.25337923z-76.88882405z-77.52956425r'   rw   r   r   )r   r   r   r   r   r   rr   r"   s    r   test_broadcast_decimal$TestFinancial.test_broadcast_decimal  si    	CHHWU^gdm%C%)%(^WT]%,V_6 %^4gn6M$^4gn6M$^4678	: 	CHHWU^gdm%C%)%(^WT]%,V_6 %\2GN4K$^4gn6M$^4678	: 	CHHWU^gdm%C%)%(^WT]%,V_gcl&-clGCL'#,&+W&67
 %\2GN4K$^4gn6M$^4678	:r   r   N)__name__
__module____qualname____firstlineno__r   r#   r*   r>   rC   rI   rO   rT   ra   rk   rs   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r
   r
      s    ,FF
,&G@
I?
"+8P@*?$P&%
5
8N*>@@m<^=":r   r
   )decimalr   r   numpy.testingr   r   r   r   r   numpy_financialr   objectr
   r   r   r   <module>r      s*       N:F N:r   