
    Qf                     *   d dl Z d dlmZ d dlmZ  G d de          Zdede j        fdZej	        fd	ee j         e j
        f         d
edefdZd	e j         defdZdede j         fdZdedefdZdedefdZd	ee j         e j
        f         defdZdS )    N)Enum)Unionc                       e Zd ZdZdZdS )Calendar      N)__name__
__module____qualname__	GREGORIANJULIAN     L/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/astral/julian.pyr   r      s        IFFFr   r   fractionreturnc                     | dz  }t          |dz            }||dz  dz  z  }t          |dz            }||dz  z  }t          |          }t          j        |||          S )NQ   <   )intdatetimetime)r   shms       r   day_fraction_to_timer      sj    L!AAMAR"AAFARKAAA=Aq!!!r   atcalendarc                    dt           j        dt          fd}| j        }| j        }| j        }d}t          | t           j                   r# ||                                           }|dz  }nd}|dk    r
|dz  }|dz  }t          |d	z            }|t          j        k    rd|z
  t          |d
z            z   }	nd}	t          d|dz   z            t          d|dz   z            z   |z   |z   |	z   dz
  }
|
S )zCalculate the Julian Day (number) for the specified date/time

    julian day numbers for dates are calculated for the start of the day
    tr   c                 V    t          | j        dz  | j        dz  z   | j        z             S )Nr   r   )r   hourminutesecond)r!   s    r   _time_to_secondsz#julianday.<locals>._time_to_seconds   s(    16D=18b=018;<<<r   r   r   r   r      d           v@l  aTR'>@g     җ@)	r   r   r   yearmonthday
isinstancer   r   )r   r   r&   r-   r.   r/   day_fractionr!   abjds              r   	juliandayr5      s6   =HM =c = = = = 7DHE
&CL"h'(( RWWYY''L)zz	D3JA8%%%ECAJJFdTk"##
g#
$
$	%
	 	 		
 	  Ir   c                 0   | j         }| j        }| j        }d|z  d|z  z   |z   }|dk     r|dz  }|dk    r
|dz  }|dz  }|dk    rd|d	z   d
z  z   dz
  }n|dz  |dz  z
  |d
z  z   }d|z  dz
  }||z   t          d|dz   z            z   |z   | j        dz  z   }|S )z)Calculate the Modified Julian Date numberi'  r(   r   r   r   r'   g333-nAr+   r)   i  i  im  i\\
 r,      )r-   r.   r/   r   r#   )r   r-   r.   r/   r2   r3   mjds          r   julianday_modifiedr:   ?   s     7DHE
&CsU{"S(Aaxx	zz	J$+""T)CZD3J'4!84d
VA
a%#g+,,
,s
2RWr\
ACJr   r4   c                    | dz  } t          |           }| |z
  }|dk     r|}n0t          |dz
  dz            }|dz   |z   t          |dz            z   }|dz   }t          |dz
  d	z            }t          d	|z            }t          ||z
  d
z            }||z
  t          d
|z            z
  |z   }t          |          }	||	z
  }
|
dz  }t          |dz            }||dz  z  }t          |dz            }||dz  z  }t          |          }|dk     r|dz
  }n|dz
  }|dk    r|dz
  }n|dz
  }t          j        |||	|||          S )z)Convert a Julian Day number to a datetimeg      ?i# g   @}<Ag    @r   g      @i  gfffff^@r*   r,   r   r   r         r   r+   ik  )r   r   )r4   zfr2   alphar3   cder/   r!   total_secondsr#   r$   secondsr.   r-   s                    r   julianday_to_datetimerF   Y   s   #IBBA
QA7{{Q^x/00EEMC,,,	DAQY& !!AFQJAQUgA	AGaK   1$A
a&&C	CA&M}t#$$DTD[ M#$$FVb[ M-  G2vvABqyy4x4xT5#tVWEEEr   r5   c                     | dz
  dz  S )z/Convert a Julian Day number to a Julian Century   ,BA    @r   r5   s    r   julianday_to_juliancenturyrK      s    	!W,,r   juliancenturyc                     | dz  dz   S )z/Convert a Julian Century number to a Julian DayrI   rH   r   )rL   s    r   juliancentury_to_juliandayrN      s    G#y00r   c                 &    t          |           dz
  S )z6Calculate the numer of Julian Days since Jan 1.5, 2000rH   rJ   )r   s    r   julianday_2000rP      s    R==9$$r   )r   enumr   typingr   r   floatr   r   r   dater5   r:   rF   rK   rN   rP   r   r   r   <module>rU      s                   t   
"5 "X] " " " " GOFX' 'h./';C'
' ' ' 'T8,     4$Fe $F(9 $F $F $F $FN-% -E - - - -
1e 1 1 1 1 1
%uX.=> %5 % % % % % %r   