MINI MINI MANI MO
3
  \r@             
   @   s$  d Z ddlZddlZddlZdd ZdZdZdZ	d^dd	dd
dd
ddd
dd
dg
Z
d_gZdZx&e
dd D ]Z
eje ee
7 ZqfW [[
dd Zd
d Zdd Zdd Zdd ZedZedZedZdd Zdddddddd d!d"d#d$d%g
Zdd&d'd(d)d*d+d,gZd-d. Zd`d0d1Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$G dDdE dEZ%e%dae%_&e%dFdGdHdHdIdJe%_'e%ddKe%_(G dLdM dMZ)e)Z*e)ddde)_&e)ddNde)_'e%ddOe)_(G dPdQ dQZ+e+Z,G dRdS dSZeZ-eddde_&edGdHdHdIe_'e%ddKe_(G dTdU dUe)Z.e.ddde._&e.ddNddGdHdHdIe._'e%ddKe._(dVdW Z/G dXdY dYe+Z0e0j1e%de0_2e0j1e0j3e0_&e0j1e0j4e0_'e.dZdde0j2d[Z5ydd\l6T W n e7k
r   Y nPX [[[
[[[[5[	[[[ [[!["[[[[#[*[[[[[[/[[[[-[,[[[$dd]l6m Z  dS )bzConcrete date/time and related types.
See http://www.iana.org/time-zones/repository/tz-link.html for
time zone and DST data sources.
    Nc             C   s   | |krdS | |krdS dS )Nr       )xyr   r    /usr/lib64/python3.6/datetime.py_cmp   s    r   r   i'  i۹7          c             C   s$   | d dko"| d dkp"| d dkS )zyear -> 1 if leap year, else 0.   r   d   i  r   )yearr   r   r   _is_leap%   s    r   c             C   s(   | d }|d |d  |d  |d  S )z2year -> number of days before January 1st of year.r   im  r   r
   i  r   )r   r   r   r   r   _days_before_year)   s    r   c             C   s   |dkrt | rdS t| S )z9year, month -> number of days in that month in that year.      )r   _DAYS_IN_MONTH)r   monthr   r   r   _days_in_month.   s    r   c             C   s   t | |dkot|  S )zCyear, month -> number of days in year preceding first day of month.r   )_DAYS_BEFORE_MONTHr   )r   r   r   r   r   _days_before_month5   s    r   c             C   s    t | |}t| t| | | S )z>year, month, day -> ordinal, considering 01-Jan-0001 as day 1.)r   r   r   )r   r   daydimr   r   r   _ymd2ord:   s    
r   i  e      c       	      C   s   | d8 } t | t\}} |d d }t | t\}} t | t\}} t | d\}} ||d |d  | 7 }|dkst|dkr|d ddfS |dko|d	kp|dk}| d
 d? }t| |dko| }|| kr|d8 }|t| |dko| 8 }| |8 } ||| d fS )
z@ordinal -> (year, month, day), considering 01-Jan-0001 as day 1.r   i  im  r
   r      r	         2   r   r   )divmod_DI400Y_DI100Y_DI4Yr   r   )	nZn400r   Zn100Zn4Zn1Zleapyearr   Z	precedingr   r   r   _ord2ymdS   s"