
    9j                     f   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y)    N)Enum)Unionc                       e Zd ZdZdZy)Calendar      N)__name__
__module____qualname__	GREGORIANJULIAN     Y/var/www/html/eeg-assistent/abrechnung/venv/lib/python3.12/site-packages/astral/julian.pyr   r      s    IFr   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      sb    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 || j                               }|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                 l    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+    166D=188b=0188;<<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      s   =HMM =c = 77DHHE
&&CL"h''(RWWY'L)z	D3JA8%%%ECAJFdTk"#
g#
$	%
	 	 		
 	  Ir   c                 J   | 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     77DHHE
&&CsU{"S(Aax	z	J$+""T)CZD3J'4!84d
VA
a%#g+,
,s
2RWWr\
ACJr   r4   c                 0   | dz  } t        |       }| |z
  }|dk  r|}n(t        |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kD  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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2vABqy4x4xT5#tVW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FXFX'h./';C'
'T8,,  4$Fe $F(9(9 $FN-% -E -
1e 1 1
%uX..=> %5 %r   