Ë
    IB™j¯0  ã                   óÖ  — d dl Zd dlmZmZ  ej                  d«       ej
                  ej                  ej                  ej                  ej                  ej                  ej                  dœZg d¢Zd ddddd	œZd
ddddddddddddœZdddddd	œZh d£ZddhZh d£Zh d £Zh 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%d(„ Z&d)„ Z'd0d*„Z(d1d+„Z)d2d,„Z*d-„ Z+d.„ Z,	 	 	 d3d/„Z-y)4é    N)ÚdatetimeÚ	timedeltaz/usr/share/ephe)ÚSunÚMoonÚMercuryÚVenusÚMarsÚJupiterÚSaturné<   éZ   éx   é´   )ÚconjunctionÚsextileÚsquareÚtrineÚ
oppositionu   â˜‰u   â˜½u   â˜¿u   â™€u   â™‚u   â™ƒu   â™„u   â˜Œu   âœ¶u   â–¡u   â–³u   â˜�)r   r   r   r   r	   r
   r   r   r   r   r   r   ÚConjunctionÚSextileÚSquareÚTrineÚ
Opposition>   r   r   r   r   r   >   r   r	   r   r   r   >   r   r	   r   r   r   r
   r   >   r   ÚJunor	   r   ÚPlutor   ÚVestaÚChironÚLilithÚPholusr   ÚUranusr
   r   ÚNeptuneç      ð?c                 ó   — | dz  S )Néh  © )Úvalues    ú:/var/www/html/Astrologybackend/backend/upcoming_aspects.pyÚnormalize_degreer(   v   s   € Ø�3‰;Ðó    c                 ó<   — t        | |z
  «      dz  }|dk  r|S d|z
  S )Nr$   r   )Úabs)ÚaÚbÚds      r'   Ú
angle_diffr/   z   s)   € ÜˆA�‰E‹
�SÑ€AØ�S’ˆ1Ð%˜c A™gÐ%r)   c                 ób   — t        | «      }t        | |z
  dz  «      }|dk(  r|dz  }d}|› d|› d�S )Nr   é   r   u   Â° ú')ÚintÚround)ÚorbÚdegÚminutess      r'   Ú
format_orbr8      sF   € Ü
ˆc‹(€CÜ�S˜3‘Y "Ñ$Ó%€Gà�"‚}Øˆq‰ˆØˆàˆU�#�g�Y˜aÐ Ð r)   c                 ó$   — | j                  d«      S )Nz	%B %d, %Y)Ústrftime)Údate_objs    r'   Úformat_dater<   Š   s   € Ø×Ñ˜[Ó)Ð)r)   c                 óÌ   — t        | xs d«      j                  dd«      j                  «       j                  «       }dddddd	d
dœ}|j	                  ||j                  «       «      S )NÚ Ú_ú r   r   r   r   r	   r
   r   )ÚsunÚmoonÚmercuryÚvenusÚmarsÚjupiterÚsaturn)ÚstrÚreplaceÚstripÚlowerÚgetÚtitle)ÚnameÚcleanÚaliasess      r'   Únormalize_planet_namerQ   Ž   se   € Ü�’
˜‹O×#Ñ# C¨Ó-×3Ñ3Ó5×;Ñ;Ó=€Eð ØØØØØØñ€Gð �;‰;�u˜eŸk™k›mÓ,Ð,r)   c                 óà   — t        | t        «      r| S g }| j                  «       D ]F  \  }}|j                  d«      xs |}|j	                  t        |«      |j                  d«      dœ«       ŒH |S )NÚplanetÚ	longitude)rS   rT   )Ú
isinstanceÚlistÚitemsrL   ÚappendrQ   )Únatal_planetsÚresultÚkeyr&   Úplanet_names        r'   Únormalize_natal_planetsr]   ž   sr   € Ü�-¤Ô&ØÐà€Fà#×)Ñ)Ó+ò ‰
ˆˆUØ—i‘i Ó)Ò0¨Sˆà�‰Ü+¨KÓ8ØŸ™ ;Ó/ñ
õ 	ðð €Mr)   c                 óR  — t        j                  | j                  | j                  | j                  d«      }i }t
        j                  «       D ]0  \  }}	 t        j                  ||«      }t        |d   d   «      ||<   Œ2 |S # t        $ r}t        d|› d|› �«       Y d }~ŒTd }~ww xY w)Ng      (@r   zTransit calculation error for z: )ÚsweÚjuldayÚyearÚmonthÚdayÚTRANSIT_PLANETSrW   Úcalc_utr(   Ú	ExceptionÚprint)r;   ÚjdÚdatarN   Ú	planet_idrZ   Úes          r'   Úget_transit_longitudesrl   ¯   s­   € Ü	�‰Ø�‰Ø�‰Ø�‰Øó	
€Bð €Dä*×0Ñ0Ó2ò @‰ˆˆið	@Ü—[‘[  YÓ/ˆFÜ)¨&°©)°A©,Ó7ˆD�ŠJð@ð €Køô ò 	@ÜÐ2°4°&¸¸1¸#Ð>×?Ñ?ûð	@ús   Á*BÂ	B&ÂB!Â!B&c                 ó¬   — t        | xs d«      j                  «       } t        |xs d«      }t        |xs d«      }| dv ry| dv ry| dk(  r
|dv s|dv ryyy)	Nr>   )r   r   ÚPOSITIVE)r   r   ÚNEGATIVEr   >   r	   r   ÚNEUTRAL)rH   rK   ©Úaspect_nameÚtransit_nameÚ
natal_names      r'   Ú
get_effectru   Ã   sr   € Ü�kÒ' RÓ(×.Ñ.Ó0€KÜ�|Ò) rÓ*€LÜ�ZÒ% 2Ó&€JàÐ*Ñ*ØàÐ.Ñ.Øà�mÒ#àÐ-Ñ-°Ð?QÑ1QØØàr)   c                 óV   — t        | xs d«      j                  «       } | dk(  ry| dk(  ryy)Nr>   rn   Úgreenro   ÚredÚgray)rH   Úupper)ÚeffectÚimpacts     r'   Ú	get_colorr}   ×   s2   € Ü�’˜2Ó×$Ñ$Ó&€Fà�ÒØà�ÒØàr)   c                 ó’   — t        |xs d«      j                  «       }ddddddddddddddddœ}|j                  |d«      }| |k  ryy )	Nr>   r"   g      à?çš™™™™™Ù?çš™™™™™á?ç333333Ó?)r   r   r   r   r	   r
   r   r    r!   r   r   r   r   r   r   ÚHIGHEST)rH   rM   rL   )r5   rs   rt   rr   Ú
thresholdsÚlimits         r'   Úget_impact_by_orbr…   ã   sq   € ô �|Ò) rÓ*×0Ñ0Ó2€Lð ØØØØØØØØØØØØØØñ€Jð$ �N‰N˜<¨Ó.€Eà
ˆe‚|Øàr)   c                  ó   — y)NTr%   ©rs   rt   rr   r5   s       r'   Úis_showable_aspectrˆ     s   € ð r)   c                 ób  — d}| |k(  r|dz  }|dk  r|dz  }n1|dk  r|dz  }n&|dk  r|dz  }n|d	k  r|d
z  }n|dk  r|dz  }n|dz  }|dv r|dz  }n |dk(  r|dz  }n|dk(  r|d
z  }n
|dk(  r|dz  }|dv r|dz  }n|dv r|d
z  }n	|dv r|dz  }| dv r|d
z  }|S | dv r|dz  }|S | dv r|dz  }|S )Nr   é   gš™™™™™¹?é   gš™™™™™É?é   r�   é   r   é   r€   é   r1   )r   r   r   r   r   >   r   r   >   r	   r   r   >   r   r
   >   r   r	   >   r   r   >   r   r   r%   )rs   rt   rr   r5   Úscores        r'   Úget_sort_scorer‘   	  s7  € Ø€Eà�zÒ!Ø�‰
ˆà
ˆd‚{Ø�‰
‰Ø	�ŠØ�‰
‰Ø	�ŠØ�‰
‰Ø	�ŠØ�‰
‰Ø	�ŠØ�‰
‰à�‰
ˆàÐ3Ñ3Ø�‰
‰Ø	˜Ò	 Ø�‰
‰Ø	˜Ò	Ø�‰
‰Ø	˜	Ò	!Ø�‰
ˆà�_Ñ$Ø�‰
‰Ø	Ð3Ñ	3Ø�‰
‰Ø	Ð,Ñ	,Ø�‰
ˆà�Ñ&Ø�‰
ˆð €Lð 
Ð-Ñ	-Ø�‰
ˆð €Lð 
Ð+Ñ	+Ø�‰
ˆà€Lr)   c                 ó@  — |€3t        j                  «       }|t        |¬«      z   }|j                  «       }t	        |t         «      r|j                  «       }t	        |t
        «      r$t        j                  |d«      j                  «       }t        | «      } i }| D ]H  }t        |j                  dd«      «      }|j                  d«      }	|t        v sŒ8|	€Œ;t        |	«      ||<   ŒJ |sg S g }
t        «       }t        |«      D �]   }|t        |¬«      z   }t        |«      }g }|j                  «       D �]­  \  }}|t        vrŒ|j                  «       D �]Š  \  }}|t        vrŒt!        ||«      }t"        j                  «       D �]W  \  }}t%        ||z
  «      }t'        ||||¬«      sŒ%t)        ||||¬«      }|d	k7  rŒ:|||f}||v rŒDt+        |||¬
«      }t-        ||«      }t/        ||||¬«      }	 t        j1                  |«      }	 t        j1                  |«      }i dt3        |«      “d|“dt4        j                  ||d   «      “dt6        j                  ||j9                  «       «      “dt4        j                  ||d   «      “d|“dt4        j                  ||d   «      “dt;        |«      “d|“d|“d|“d|“d|“d|“d|“d|“d|“}|j=                  |«       �ŒZ �Œ� �Œ° |s�Œåi }|D ]D  }|d   } | |vr||| <   Œ||    }!|d   |!d   kD  r||| <   Œ(|d   |!d   k(  sŒ4|d   |!d   k  sŒ@||| <   ŒF t?        |jA                  «       «      }|jC                  d„ ¬«       tD        €|}"n	|d tD         }"|"D ].  }|d   }||v rŒ|jG                  |«       |
j=                  |«       Œ0 �Œ£ |
jC                  d „ ¬«       g }#|
D ]G  }|j                  «       D � �$ci c]  \  } }$| jI                  d!«      s| |$“Œ }%} }$|#j=                  |%«       ŒI |#S #  d}Y �ŒxY w#  d}Y �ŒÿxY wc c}$} w )"N)Úhoursz%Y-%m-%drS   r>   rT   )Údaysr‡   )rs   rt   rr   r‚   rq   éc   ÚdateÚtransit_planetÚtransit_symbolr   ÚaspectÚaspect_symbolÚnatal_planetÚnatal_symbolr5   r{   Úcolorr|   Ú
_sort_dateÚ_orb_rawÚ
_natal_idxÚ_transit_idxÚ_scoreÚ
_event_keyc                 ó   — | d   | d   | d   fS )Nr    r¡   rŸ   r%   ©Úxs    r'   ú<lambda>z,calculate_upcoming_aspects.<locals>.<lambda>Ñ  s   € Ø�,‘Ø�.Ñ!Ø�*‘ð€ r)   )r[   c                 ó&   — | d   | d   | d   | d   fS )Nrž   r    r¡   rŸ   r%   r¥   s    r'   r§   z,calculate_upcoming_aspects.<locals>.<lambda>ç  s&   € Øˆl‰OØˆl‰OØˆnÑØˆj‰Mð	
€ r)   r?   )%r   Úutcnowr   r–   rU   rH   Ústrptimer]   rQ   rL   ÚMAJOR_PLANET_KEYSÚfloatÚsetÚrangerl   rW   r/   ÚMAJOR_ASPECTSr+   rˆ   r…   ru   r}   r‘   Úindexr<   ÚSYMBOLSÚASPECT_NAMESrM   r8   rX   rV   ÚvaluesÚsortÚMAX_EVENTS_PER_DATEÚaddÚ
startswith)&rY   Ú
start_dater”   Ú	tz_offsetÚnow_utcÚ	local_nowÚ	natal_mapÚitemr\   rT   Úfinal_resultsÚshown_eventsÚiÚcurrent_dateÚtransit_mapÚday_candidatesrs   Útransit_lonrt   Ú	natal_lonÚdiffrr   Úaspect_angler5   r|   Ú	event_keyr{   r�   r�   Ú	natal_idxÚtransit_idxÚ
unique_dayr[   ÚoldÚselected_dayÚclean_resultsr&   Ú
clean_items&                                         r'   Úcalculate_upcoming_aspectsrÐ   6  s8  € ð ÐÜ—/‘/Ó#ˆØœi¨iÔ8Ñ8ˆ	Ø—^‘^Ó%ˆ
ä�*œhÔ'Ø—_‘_Ó&ˆ
ä�*œcÔ"Ü×&Ñ& z°:Ó>×CÑCÓEˆ
ä+¨MÓ:€Mà€Iàò 6ˆÜ+¨D¯H©H°X¸rÓ,BÓCˆØ—H‘H˜[Ó)ˆ	àÔ+Ò+°	Ñ0EÜ%*¨9Ó%5ˆI�kÒ"ð6ñ Øˆ	à€MÜ“5€Lä�4‹[ó L'ˆØ!¤I°1Ô$5Ñ5ˆÜ,¨\Ó:ˆàˆà)4×):Ñ):Ó)<ó \	0Ñ%ˆL˜+ØÔ#4Ñ4Øà)2¯©Ó):ó X0Ñ%�
˜IØÔ%6Ñ6Øä! +¨yÓ9�ä1>×1DÑ1DÓ1Fó R0Ñ-�K Ü˜d \Ñ1Ó2�Cä-Ø%1Ø#-Ø$/Øõ	ð !ä.ØØ%1Ø#-Ø$/ô	�Fð  Ò*Ø ð %Ø"Ø#ð!�Ið ! LÑ0Ø ä'Ø$/Ø%1Ø#-ô�Fô & f¨fÓ5�Eä*Ø%1Ø#-Ø$/Øô	�Eð'Ü$5×$;Ñ$;¸JÓ$G˜	ð)Ü&7×&=Ñ&=¸lÓ&K˜ðØ¤¨LÓ 9ðð )¨,ðð )¬'¯+©+°lÀLÐQRÁOÓ*Tð	ð !¤,×"2Ñ"2°;À×@QÑ@QÓ@SÓ"Tðð (¬¯©°[À+ÈaÁ.Ó)Qðð '¨
ðð '¬¯©°JÀ
È1ÁÓ(Nðð œz¨#›ðð ! &ðð   ðð ! &ðð" % lð#ð$ # Cð%ð& % ið'ð( '¨ð)ð* ! %ð+ð, % ið-�Dð2 #×)Ñ)¨$Ö/òeR0òX0ð	\	0ñ| Ùàˆ
à"ò 	+ˆDØ�|Ñ$ˆCà˜*Ñ$Ø"&�
˜3’à  ‘o�à˜‘> C¨¡MÒ1Ø&*�J˜s’OØ˜(‘^ s¨8¡}Ó4¸¸jÑ9IÈCÐPZÉOÓ9[Ø&*�J˜s’Oð	+ô ˜j×/Ñ/Ó1Ó2ˆà×Ññð 	ô 	
ô Ð&Ø)‰Là)Ð*>Ô+>Ð?ˆLà ò 	'ˆDØ˜\Ñ*ˆIà˜LÑ(Øà×Ñ˜YÔ'Ø× Ñ  Õ&ò	'ðKL'ð\ ×Ññ
ð ô ð €Màò )ˆð #Ÿj™j›l÷
á��UØ—>‘> #Ô&ð �‰Jð
ˆ
ñ 
ð 	×Ñ˜ZÕ(ð)ð ÐøðC'Ø$&›	ûð)Ø&(›üóf
s   Ç-PÈPÏPÐPÐP)NN)N)NNN)Né   g      @).Úswissephr_   r   r   Úset_ephe_pathÚSUNÚMOONÚMERCURYÚVENUSÚMARSÚJUPITERÚSATURNrd   r«   r¯   r±   r²   ÚHARD_ASPECTSÚSOFT_ASPECTSÚPERSONAL_NATALSÚIMPORTANT_SAME_PLANETSÚALLOWED_TRANSITSÚHARD_ORB_LIMITÚSOFT_ORB_LIMITÚSAME_IMPORTANT_HARD_ORBÚSAME_IMPORTANT_SOFT_ORBÚSAME_OTHER_HARD_ORBÚSAME_OTHER_SOFT_ORBÚJUPITER_SOFT_ORBÚJUPITER_HARD_ORBÚSATURN_SOFT_ORBÚSATURN_HARD_ORBrµ   r(   r/   r8   r<   rQ   r]   rl   ru   r}   r…   rˆ   r‘   rÐ   r%   r)   r'   ú<module>rê      s~  ðÛ ß (à €× Ñ Ð#Ô $ð �7‰7Ø�H‰HØ�{‰{Ø�Y‰YØ�H‰HØ�{‰{Ø�j‰jñ€òÐ ð ØØØØñ€ð ØØØØØØàØØØØñ€ð" !ØØØØñ€ò€ð Øð€ò
€òÐ òÐ ð €Ø€ð Ð ØÐ àÐ ØÐ ð Ð ØÐ ð €Ø€ð Ð òò&ò
!ò*ò-ò ò"ó(ó(	óò>ò*ð^ Ø	Øô	Dr)   