
    ud2f                        d Z ddlmZ ddlmZ ddlmZ ddlZ	 edg d          Z
 edg d	          Zd
Ze	j        e	j        z   Ze	j        e	_        e	j        e	j        e	j        e	j        e	j        e	j        e	j        e	j        e	j        e	j        e	j        g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*d Z+d Z,d Z-dddZ.d Z/d Z0d  Z1d! Z2d" Z3d# Z4d$ Z5d% Z6d& Z7d' Z8d( Z9d) Z:d* Z;d+ Z<d, Z=d- Z>ded/Z?d0 Z@d1 ZAd2 ZBd3 ZCd4 ZDd5 ZEdfd7ZFd8 ZGd9 ZHd: ZId; ZJd< ZKd= ZLd> ZMd? ZNd@ ZOdA ZPdB ZQdC ZRdD ZSdE ZTdF ZUdG ZVeWdHk    rddlXZX edIdJdK          ZY edLdMdK          ZZ edNdOdP          Z[ edQdRdK          Z\ e, e
dSdTdU                    Z] e, e
dVdWdX                    Z^ e, e
dYdZd[                    Z_ e, e
dSdZd\                    Z` e, e
d]d^d_                    Za e, e
d]d^d`                    Zb e, e
dad`d_                    Zc e, e
dbdTdc                    Zd ee e7ece\                      ee e7ede\                     dS dS )gz9
Use Swiss ephemeris to calculate tithi, nakshatra, etc.
    )division)ceil)
namedtupleNDate)yearmonthdayPlace)latitude	longitudetimezonegpav@c                  B    t          j        t           j        dd          S )NgWf=Ar   sweset_sid_mode	SIDM_USER     uc:\Users\sbb925582\OneDrive - Tata Technologies\Documents\Personal\jyotishyamitra\jyotishyamitra\support\panchanga.py<lambda>r   '   s    (8I1MM r   c                  B    t          j        t           j        dd          S )Ng S=Ar   r   r   r   r   r   r   (   s    S-cm=NPQRR r   c                  >    t          j        t           j                  S N)r   r   SIDM_LAHIRIr   r   r   r   r   *   s    C,S_== r   c                  >    t          j        t           j                  S r   )r   r   SIDM_FAGAN_BRADLEYr   r   r   r   r   +   s    c.s/EFF r   c                    t           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j	        d	t           j
        d	i
}||          S )
NSuryaChandraMangalaBudhaGuruShukraShaniRahuKetu)r   SUNMOONMARSMERCURYJUPITERVENUSSATURN	MEAN_NODEKETUPLUTO)planetnamess     r   get_planet_namer3   .   sV    GWch	38YK#+vsy(J&#)U[]% 
vr   c                     | |dz  z   |dz  z   S )N<   i  r   )degsminssecss      r   r   r   5   s    D47NT$Y$> r   c                     t          |           }| |z
  dz  }t          |          }t          ||z
  dz  d          }|||gS )Nr5      )intround)degdr7   mss        r   to_dms_precrA   8   sH    	#hh!
'R$	$ii!TAXOQ!
Qr   c                 L    t          |           \  }}}||t          |          gS r   )rA   r;   )r=   r>   r?   r@   s       r   to_dmsrC   ?   s'    '!Q
QAr   c                     | }t          dt          |                     D ]'}||         ||dz
           k     r||xx         dz  cc<   (|t          |          k    sJ |S )zdAdd 360 to those elements in the input list so that
     all elements are sorted in ascending order.   h  )rangelensorted)anglesresultis      r   unwrap_anglesrM   C   sq     &CKK   1 1aay6!A#;q			S 0				6&>>	!	!	!	!	-r   c                     | dk    r| dz
  n| S N   rF   r   angles    r   r   r   N   s    #5 r   c                     | dz  S NrF   r   rQ   s    r   r   r   Q   s
     r   c                     | dz   dz  S rO   r   rahus    r   r   r   U   s    TCZ3& r   c                     t          j        t           j        | d           t          j        d| t           j        t           j        z            d         dz
  }|S )N        Citraflagr   rP   )r   r   r   
fixstar_ut
FLG_SWIEPHFLG_SIDEREAL)pointfvals     r   functionrb   W   sN    S]E3/// >'5#BR1RSSSTUVZ]^D Kr   c                     |}|}d}	 ||z   dz  } | |          } | |          }||z  dk    r|}n|}||z
  |k    rn7||z   dz  S )Ng&.>T   r   r   )	funcstartstopleftrightepsilonmiddlemidvalrtvals	            r   bisection_searchrn   d   s    	$
%'	(UlaFd6llFDKKE~eed  %	( $,!	r   c                 D   t          |           t          |          k    sJ d}t          t          |                     D ]^}d}d}t          t          |                     D ]*}||k    r"||||         z
  z  }|||         ||         z
  z  }+||| |         z  |z  z  }_|S )zOGiven two lists x and y, find the value of x = xa when y = ya, i.e., f(xa) = yar   rE   )rH   rG   )xyyatotalrL   numerdenomjs           r   inverse_lagrangerw   v   s    	Q3q66				
%Q== " "aEE3q66]]  	
a"qt)!A$1+	UQqT\E!!EE	,r   c                 N    t          j        | j        | j        | j        d          S )NrY   )r   juldayr   r   r	   )dates    r   r   r      s    sz$)TZ3OO r   c                 @    t          j        | t           j                  S r   )r   revjulGREG_CALjds    r   r   r      s    SZCL99 r   rY   c           	          t          j        | ||||||          \  }}}	}
}}t          j        |||	|
|dt           j                  \  }}|S )zConverts local time to JD(UT1)r   r[   )r   utc_time_zone	utc_to_jdr}   )r   r   r	   hourminutessecondsr   rq   r?   r>   hmntr@   jd_etjd_ut1s                  r   local_time_to_jdut1r      sU    (uc4'S[\\!Q1c1-1aC3<HHH-%	-r   c                 v    d}d}t          | |z            }| ||z  z
  }t          ||z            }d|z   d|z   gS )zFGives nakshatra (1..27) and paada (1..4) in which given longitude lies竪*@竪
@rE   r;   )r   one_starone_padaquotientreminderpadas         r   nakshatra_padar      sT     ((X%&&((X--(	X 	!	!$
h,D	!!r   c                     t                       t          j        | |t          j        t          j        z            \  }}t                       t          |d                   S )z<Computes nirayana (sidereal) longitude of given planet on jdr[   r   )set_ayanamsa_moder   calc_utr^   r_   reset_ayanamsa_modenorm360)r   r1   longiflagss       r   sidereal_longituder      sP    RAQ0QRRR,%	q		r   c                 6    t          | t          j                  S r   )r   r   r'   r~   s    r   r   r      s    /CG<< r   c                 6    t          | t          j                  S r   )r   r   r(   r~   s    r   r   r      s    /CH== r   c                     |\  }}}t          j        | |dz  z
  t           j        ||t          t           j        z             }|d         d         }||dz  z   t          || z
  dz  |z             gS )zBSunrise when centre of disc is at horizon for given date and place   rsmirE   r         8@)r   
rise_transr'   _rise_flags	CALC_RISErC   r   placelatlontzrK   rises          r   sunriser      sn    ,#sB>"r"u*cgsCcm@[\\\&	1$
C-b 02 566	77r   c                     |\  }}}t          j        | |dz  z
  t           j        ||t          t           j        z             }|d         d         }||dz  z   t          || z
  dz  |z             gS )zASunset when centre of disc is at horizon for given date and placer   r   rE   r   r   )r   r   r'   r   CALC_SETrC   r   r   r   r   r   rK   settings          r   sunsetr      so    ,#sB>"r"u*cgsCcl@Z[[[&1IaL'
BsF
FGbLB#6#;<<	==r   c                     |\  }}}t          j        | |dz  z
  t           j        ||t          t           j        z             }|d         d         }t          || z
  dz  |z             S )zCMoonrise when centre of disc is at horizon for given date and placer   r   rE   r   )r   r   r(   r   r   rC   r   s          r   moonriser      sa    ,#sB>"r"u*chSs}A\]]]&	1$	b 2%	&	&&r   c                     |\  }}}t          j        | |dz  z
  t           j        ||t          t           j        z             }|d         d         }t          || z
  dz  |z             S )zBMoonset when centre of disc is at horizon for given date and placer   r   rE   r   )r   r   r(   r   r   rC   r   s          r   moonsetr      sa    ,#sB>"r"u*chSs|A[\\\&1IaL'	2#b(	)	))r   c                    |j         }t          | |          d         |dz  z
  t                    }t          |dz            }|dz  |z
  }g d}fd|D             }fd|D             }d t	          ||          D             }	|	}
|}t          ||
|          }|z   | z
  dz  |z   }t          |          t          |          g}t          dz             }t          |dz            }||z
  d	z  dk    }|r\|dz   }|dz  |z
  }t          ||
|          }|z   | z
  dz  |j         z   }|d	k    rdn|}|t          |          t          |          gz  }|S )
zITithi at sunrise for given date and place. Also returns tithi's end time.r   r            ?      ?      ?      ?c                 Z    g | ]'}t          |z             t                    z
  d z  (S rF   lunar_longitude.0tr   s     r   
<listcomp>ztithi.<locals>.<listcomp>   8    bbbTUtax00?43H3HHCObbbr   c                 Z    g | ]'}t          |z             t                    z
  d z  (S r   solar_longituder   s     r   r   ztithi.<locals>.<listcomp>   r   r   c                     g | ]
\  }}||z
  S r   r   r   moonsuns      r   r   ztithi.<locals>.<listcomp>   s     [[[[dCdSj[[[r   rE      )r   r   lunar_phaser   ziprw   r;   rC   )r   r   r   
moon_phasetodaydegrees_leftoffsetslunar_long_diffsolar_long_diffrelative_motionrq   rp   
approx_endendsanswermoon_phase_tmrwtomorrow	isSkipped
leap_tithir   s                      @r   tithir      s   ~"	U		A	b	($ 4  *
zB

%j(, #""'bbbbY`bbb/bbbbY`bbb/[[C4Y4Y[[[/ !!1l33*

R
2	%	*$JJt%&  q))//B&''(%2%)) .J?Z/L!!Q55J:r!R'%.8DrkkzJ
s:t--F	-r   c                 J   |\  }}}t          | |          d         |dz  z
  g d}fd|D             }t          |d         dz  dz            }t          |          }|}	t          |	||dz  dz            }
| z
  |
z   dz  |z   }t	          |          t          |          g}t          |d         dz  dz            }||z
  dz  d	k    }|rU|d	z   }t          |||dz  dz            }
| z
  |
z   dz  |z   }|dk    rd	n|}|t	          |          t          |          gz  }|S )
zYCurrent nakshatra as of julian day (jd)
     1 = Asvini, 2 = Bharani, ..., 27 = Revati
  r   r   )rY   r   r   r   r   c                 4    g | ]}t          |z             S r   r   r   s     r   r   znakshatra.<locals>.<listcomp>   s%    <<<q**<<<r      rF   r   rE   )r   r   rM   rw   r;   rC   )r   r   r   r   r   r   
longitudesnakrq   rp   r   r   r   nak_tmrwr   leap_nakr   s                   @r   	nakshatrar      sm   
 ,#sB	U		A	c	)$''''<<<<G<<<* 	Z]R#%&&# J!!1cCi"n55*
)j
 B	&	+$HHfTll#& *R.2%+,,(#~#a') ,QwH!':x#~7JKKJ2I
"b(2-D2IIqq8H
s8}}fTll++F	-r   c                    |\  }}}t          | |          d         |dz  z
  t                    }t                    }||z   dz  }t          |dz  dz            }|dz  |z
  }	g d}
fd|
D             }fd|
D             }d	 t	          ||          D             }|}|
}t          |||	          }|z   | z
  d
z  |z   }t          |          t          |          g}t          dz             }t          dz             }||z   dz  }t          |dz  dz            }||z
  dz  dk    }|rW|dz   }|dz  |z
  }	t          |||	          }|z   | z
  d
z  |z   }|dk    rdn|}|t          |          t          |          gz  }|S )zQYoga at given jd and place.
     1 = Vishkambha, 2 = Priti, ..., 27 = Vaidhrti
  r   r   rF   r   r   r   c                 Z    g | ]'}t          |z             t                    z
  d z  (S r   r   r   s     r   r   zyoga.<locals>.<listcomp>(  r   r   c                 Z    g | ]'}t          |z             t                    z
  d z  (S r   r   r   s     r   r   zyoga.<locals>.<listcomp>)  r   r   c                     g | ]
\  }}||z   S r   r   r   s      r   r   zyoga.<locals>.<listcomp>*  s     XXX+44#:XXXr   r   rE   )r   r   r   r   r   rw   r;   rC   )r   r   r   r   r   
lunar_long
solar_longrs   yogr   r   r   r   total_motionrq   rp   r   r   r   lunar_long_tmrwsolar_long_tmrw
total_tmrwr   r   leap_yogr   s                            @r   yogar     s    
 ,#sB	U		A	c	)$ t$$*t$$*
"c
)%URZ## !E), #""'bbbbY`bbb/bbbbY`bbb/XX_o1V1VXXX, !!1l33*

b
 B	&	+$HHfTll#& $D1H--/#D1H--//1S8**r/C'(((#~#a') ,QwHx(50L!!Q55J:"b(2-D2IIqq8H
s8}}fTll++F	-r   c                     t          | |          d         }t          |          }t          |          }||z
  dz  }t          |dz            }|dz  |z
  }t	          |          gS )z9Returns the karana and their ending times. (from 1 to 60)r   rF   r:   )r   r   r   r   r;   )r   r   r   r   r   r   r   r   s           r   karanar   F  sp     
U		A	$ t$$*t$$*Z'3.*
zA~

%Z',
e**r   c                 F    t          t          | dz             dz            S )zFWeekday for given Julian day. 0 = Sunday, 1 = Monday,..., 6 = SaturdayrE      )r;   r   r~   s    r   vaarar   T  s    	T"q&\\A		r   c                 (   t          | |          d         }t          | |          d         }t          ||d          }t          ||d          }t          |          }t          |          }||k    }|dz   }	|	dk    r|	dz  }	t	          |	          |gS )zbReturns lunar month and if it is adhika or not.
     1 = Chaitra, 2 = Vaisakha, ..., 12 = Phalgunar   r   rE   r   )r   r   new_moonraasir;   )
r   r   ticriticallast_new_moonnext_new_moonthis_solar_monthnext_solar_monthis_leap_monthmaasas
             r   masar  X  s     R"R"(8R,,-8R,,-=))=))#'77-
Q
%
RZZ%"*
e**m	$$r   c                     | dz
  S )Ng    c!Ar   r~   s    r   r   r   h  s
    b8m r   c                 |    t          |           }t          |d|z
  dz  z   t          z            }|dz
  }|dz   }||fS )N   r   ik     )aharganar;   sidereal_year)r   	maasa_numaharkalisakavikramas         r   elapsed_yearr  j  sI    	"$	da)mr))]:	;	;$	$3J'	tr   r   c                     |dk    r| |z
  |dk    r| d|z
  z   d t          d          D             }fd|D             }t          |          }t          ||d          }|z   S )zReturns JDN, where
     opt = -1:  JDN < jd such that lunar_phase(JDN) = 360 degrees
     opt = +1:  JDN >= jd such that lunar_phase(JDN) = 360 degrees
  r   rE   r   c                     g | ]
}d |dz  z   S )r	  r   )r   offsets     r   r   znew_moon.<locals>.<listcomp>{  s     ///&VAX///r      c                 4    g | ]}t          |z             S r   )r   )r   rL   rf   s     r   r   znew_moon.<locals>.<listcomp>|  s%    )))!{519)))r   rF   )rG   rM   rw   )r   tithi_optrp   rq   y0rf   s         @r   r   r   s  s    
 	BYYfBYYrF{+//E"II///!))))q)))!A!1c"""	r   c                 b    t          |           }t          |           }t          |dz            S )z-Zodiac of given jd. 1 = Mesha, ... 12 = Meenag      >@)r   r   )r   r@   solar_nirayanas      r   r   r     s/    b!"2&&.	ns"	#	##r   c                 R    t          |           }t          |           }||z
  dz  }|S rT   )r   r   )r   r   r   r   s       r   r   r     s1    r""*r""*Z'3.*	r   c                     t          | |          d         }|dk    r|dz
  dz  }|dz   t          |dz  dz
  dz            z   dz  }|S )	Nr   i     r5   r      l   iPF  )r  r;   )r   r  r  samvats       r   
samvatsarar$    s\    	b)	$	$Q	'$ 
T\\dRi2-d2ITCZ#-67772=&	-r   c                     | dz
  dz  S )z0 = Vasanta,...,5 = ShishirarE   rd   r   )masa_nums    r   ritur'    s    
Q,1	r   c                     t          | |          d         }t          | |          d         }||z
  dz  }|t          |          gS )Nr   r   )r   r   rC   )r   r   srisessetdiffs        r   day_durationr,    sI    
"e

Q
%	E		1	$
,"	$
t	r   c                    |\  }}}|j         }t          j        | |dz  z
  t          j        ||t          t          j        z             d         d         }t          j        | |dz  z
  t          j        ||t          t          j        z             d         d         }||z
  }g }t          dd          D ]6}	|                    t          ||	|z  dz  z   | z
  dz  |z                        7t          j        | dz   |dz  z
  t          j        ||t          t          j        z             d         d         }||z
  }
t          dd          D ]6}	|                    t          ||	|
z  dz  z   | z
  dz  |z                        7|S )Nr   r   rE   r   	      )
r   r   r   r'   r   r   r   rG   appendrC   )r   r   r   r   r   r)  r*  day_dur	end_timesrL   	night_durs              r   gauri_chogadiyar4    s   ,#sB~"
.beSWc3{S]?Z
[
[
[\]
^_`
a%	RU
CGS#kCL>X	Y	Y	YZ[	\]^	_$E\')A;; I IaVUa'kQ%66;rABFGGHHHH ."q&BrE)37C[SVS`E`
a
a
abc
def
g%t|)A;; J JaVTQ]a$77"<BRGHHIIII	r   rW   c                    |\  }}}|j         }t          j        | |dz  z
  t          j        ||t          t          j        z             d         d         }t          j        | |dz  z
  t          j        ||t          t          j        z             d         d         }||z
  }t          |           }	g dg dg dd}
|||
|         |	         z  z   }|d	|z  z   }|| z
  dz  |z   }|| z
  dz  |z   }t          |          t          |          gS )
Nr   r   rE   r   )g      ?      ?r   r         ?      ?r   )r   r7  r   r8  r   r6  rY   )r   r8  r   r6  rY   r   r7  )rW   gulika	yamagandar6  )	r   r   r   r'   r   r   r   r   rC   )r   r   optionr   r   r   r)  r*  r1  weekdayr   
start_timeend_times                r   trikalamr?    s-   ,#sB~"
.beSWc3{S]?Z
[
[
[\]
^_`
a%	RU
CGS#kCL>X	Y	Y	YZ[	\]^	_$E\'"II' DCCCCCFFFI I' w!999*%'/)( R2%**mr!B&(


fX..	//r   c                 $    t          | |d          S )NrW   r?  r   r   s     r   r   r     s    xE6:: r   c                 $    t          | |d          S )Nr:  rA  rB  s     r   r   r     s    HR$D$D r   c                 $    t          | |d          S )Nr9  rA  rB  s     r   r   r     s    "eX!>!> r   c                    |\  }}}|j         }t          j        | |dz  z
  t          j        ||t          t          j        z             d         d         }t          j        | dz   |dz  z
  t          j        ||t          t          j        z             d         d         }||z
  }t          j        | |dz  z
  t          j        ||t          t          j        z             d         d         }||z
  }t          |           }	ddgddgd	d
gddgddgd	dgddgg}
||g}||g}|	dk    r
||d<   ||d<   ddg}ddg}t          dd          D ]x}|
|	         |         }|dk    rb||         ||         |
|	         |         z  dz  z   ||<   ||         |dz  dz  z   ||<   ||         | z
  dz  |z   ||<   ||         | z
  dz  |z   ||<   y||gS )Nr   r   rE   r   g$@rY   g@g!@g333333@g333333@gffffff@g      @g?rd   r   g?)	r   r   r   r'   r   r   r   r   rG   )r   r   r   r   r   r*  r)  r3  r1  r<  r   durbasestart_timesr2  rL   r  s                    r   durmuhurtamrI    s   ,#sB~" 
RU
CGS#kCL>X	Y	Y	YZ[	\]^	_$
."q&BrE)37C[SVS`E`
a
a
abc
def
g%t|) .beSWc3{S]?Z
[
[
[\]
^_`
a%E\'"II' C[3Z3Z3Z3Z3Z3Z' 
'#
$\\YCF$Q A+!f)A;; 3 3aWa F}}AwQ''*:1*=!=!BBk!n ^gmb&88il $A+r1B6k!nlR'2-2il
y	!!r   c                    |\  }}}|j         }t          j        | |dz  z
  t          j        ||t          t          j        z             d         d         }t          j        | |dz  z
  t          j        ||t          t          j        z             d         d         }||z
  }|d|z  z   }|d|z  z   }	|| z
  dz  |z   |	| z
  dz  |z   gS )zhAbhijit muhurta is the 8th muhurta (middle one) of the 15 muhurtas
  during the day_duration (~12 hours)r   r   rE   r   g?g?)r   r   r   r'   r   r   r   )
r   r   r   r   r   r)  r*  r1  r=  r>  s
             r   abhijit_muhurtarK    s     ,#sB~"
.beSWc3{S]?Z
[
[
[\]
^_`
a%	RU
CGS#kCL>X	Y	Y	YZ[	\]^	_$E\'v''*Vg%%( ?b
 2
%2';b'@	AAr   c           	      \   | |j         dz  z
  }g }t          D ]}|t          j        k    rt	          ||          }n't          t	          |t          j                            }t          |dz            }t          |dz            }|	                    |||t          |          g           |S )zComputes instantaneous planetary positions
     (i.e., which celestial object lies in which constellation)

     Also gives the nakshatra-pada division
   r   r   )r   planet_listr   r/   r   ketuRAHUr;   rC   r0  r   )r   r   jd_ut	positionsr1   nirayana_longconstellationcoordinatess           r   planetary_positionsrU    s     u~#
#%) 
Z 
Zf(77mm-eSX>>??m *++M+,,Kfm[.:W:WXYYYY	r   c                    |\  }}}| |dz  z
  }t                       t          j        |||t          j                  d         d         }t	          |dz            }t          |dz            }t                       ||t          |          gS )z8Lagna (=ascendant) calculation at any given time & placer   r[   rE   r   r   )r   r   	houses_exr_   r;   rC   r   r   )	r   r   r   r   r   jd_utcnirayana_lagnarS  rT  s	            r   	ascendantrZ  "  s    ,#sBc?& =c#:JKKKANqQ. nr)**-~*+++
n^&D&D	EEr   c                 H    d}d|z  }| |z  }|dz  }t          |dz            S )zgCalculates the navamsa-sign in which given longitude falls
  0 = Aries, 1 = Taurus, ..., 11 = Pisces
  r   r   rE   r   )r   r   one_signsigns_elapsedfraction_lefts        r   navamsa_from_longr_  4  s9     ((](h&-!#-	]R	 	  r   c                    | |j         dz  z
  }g }t          D ]n}|t          j        k    rt	          ||          }n't          t	          |t          j                            }|                    |t          |          g           o|S )z!Calculates navamsa of all planetsr   )	r   rM  r   r/   r   rN  r.   r0  r_  )r   r   rX  rQ  r1   rR  s         r   navamsara  >  s    $$&) A Af(88mm-fcmDDEEmf/>>?@@@@	r   c                  z   t          t          j                    j        j                   t          t          t          t                               t          t          t          t                               t          t          t          t                    d                    t          t          t          t                    d                    t          t                    dk    sJ t          t          t          t                    d                    t          t          t                    dgk    sJ d S )NrE      r   )printsys	_getframef_codeco_namer   date2	bangalorer   r   r   r   date4shillongr   helsinkir   r   r   	all_testsrn  N  s    &'''	""###y!!"""y!!!$%%%ui  #$$$	u				x  #$$$	x	 	 RD	(	(	(	(&r   c                     t          t          j                    j        j                   t          t          ddd                    } t          t          ddd                    }t          t          ddd                    }t          t          ddd                    }t          t          ddd	                    }t          d
           t          t          t          t                               t          t          t          t                               t          t          t          t                               t          t          t          t                               t          t          |t                               t          t          | t                               t          t          |t                               t          t          |t                               t          t          |t                               t          t          t          t                               t          d           d S )N  rd        r	  r            ztithi startz	tithi end)rd  re  rf  rg  rh  gregorian_to_jdr   r   date1rj  ri  date3rm  shyambirthdatehonavar)feb3apr24apr19apr20apr21s        r   tithi_testsr  Y  s   &'''	dAq))	*	*$
$tQ++
,
,%
$tQ++
,
,%
$tQ++
,
,%
$tQ++
,
,%eY   eY   eY   eXeY   dIeXeXeXng&&'''&r   c                     t          t          j                    j        j                   t          t          t          t                               t          t          t          t                               t          t          t          t                               t          t          t          t                               d S r   )rd  re  rf  rg  rh  r   rw  rj  ri  rx  rk  rl  r   r   r   nakshatra_testsr  n  s    &'''	%##$$$	%##$$$	%##$$$	%""###&r   c                  v   t          t          j                    j        j                   t          t          ddd                    } t          t          t          t                               t          t          t          t                               t          t          | t                               d S )Nrp  rc     )rd  re  rf  rg  rh  rv  r   r   rx  rj  ri  rm  )may22s    r   
yoga_testsr  v  s    &'''
$tQ++
,
,%UIUIUHr   c                  x   t          t          j                    j        j                   t          t          ddd                    } t          t          ddd                    }t          t          ddd                    }t          t          ddd                    }t          t          dd	d
                    }t          t          dd	d                    }t          d           t          t          | t                               t          t          |t                               t          t          |t                               t          t          |t                               t          t          |t                               t          t          |t                               d S )Nrp  rd   
   i  r/  r     r.  rc  rt  ru  shyam)
rd  re  rf  rg  rh  rv  r   r  rj  rm  )r   aug17aug18sep19may20may21s         r   
masa_testsr  }  sS   &'''tD!R(())"
$tQ++
,
,%
$tQ++
,
,%
$tQ++
,
,%
$tQ++
,
,%
$tQ++
,
,%...RUIUIUIUHUHr   c                  >   t          t          j                    j        j                   t          j        dddd          } t          | t                    dg dddggk    sJ t          j        ddd	d
          } t          | t                    dg dddggk    sJ d S )N  r.  r   g"""""7@rd   )r	  %   r  rc  r	     .?P*@r/  )rt        rt  rq  )	rd  re  rf  rg  rh  r   ry   rZ  rj  r~   s    r   ascendant_testsr    s    &'''
z$2{++"	2y	!	!aq!f%=	=	=	=	=
z$2566"	2y	!	!aAw%?	?	?	?	?	?	?r   c                     t          t          j                    j        j                   t          j        dddd          } t          | t                    }ddgddgd	dgd
d
gdd	gddgdd	gddgddgddgddgg}||k    sJ d S )Nr  r.  r  r  r      rE   rc  r	  rd   rq  r  r:   r   r/  )	rd  re  rf  rg  rh  r   ry   ra  rj  )r   nvexpecteds      r   navamsa_testsr    s    &'''
z$2566"r9""g1v1v1v1v2w!fr2hAB!R:(	xr   __main__gl)@gtfS@g      @gl9@gnV@g(\N@g(\8@g       @g镲,@g̜R@i  r      rp  rE   r  i  r:   r.  ru  rr  r	  r/  r  i  i  rc  )r   r   r   rY   )r   rV   )f__doc__
__future__r   mathr   collectionsr   structswissephr   r   r
   r  BIT_DISC_CENTERBIT_NO_REFRACTIONr   r0   r/   r'   r(   r)   r*   r+   r,   r-   r.   URANUSNEPTUNErM  revati_359_50galc_cent_mid_mular   r   r3   from_dmsrA   rC   rM   norm180r   rN  rb   rn   rw   rv  jd_to_gregorianr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r   r$  r'  r,  r4  r?  
rahu_kalamyamaganda_kalamgulika_kalamrI  rK  rU  rZ  r_  ra  rn  r  r  r  r  r  r  __name__re  rj  rl  rm  rz  rw  ri  rx  rk  apr_8apr_10ry  deepabirthdaterd  r   r   r   <module>r     s                 , , , , , ,    vf...//w===>> !C$99 9w#(CKy#*cmxS[3 NMRR == FF    ?>       A
@ $
# '&    $  " PO99   
" 
" 
"   =<==8 8 8> > >' ' '* * *& & &R     F/ / /d    % % %  $#     $ $ $          &0 0 0 0* ;:
DD>>*" *" *"XB B B"  .F F F$! ! !   		 		 			 	 	*	 	 	     A A A   z***eFFD)))U664(((U5&$''(E'5$'''
/$$tQ++
,
,%
/$$tQ++
,
,%
/$$tQ**
+
+%
/$$tQ++
,
,%
/$$tQ**
+
+%?44a,,--&"?44b!#4#455."?44a#3#344.
 %ng&&'''%ng&&'''''' r   