o
    FDi                     @  sx   d dl mZ d dlZd dlmZ ejrd dlm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G dd dZdS )    )annotationsN)Locale)Duration                     <   
   z.futurez.pastz.afterz.beforec                   @  s.   e Zd ZdZddddZ			
	ddddZdS )DifferenceFormatterz1
    Handles formatting differences in text.
    enlocalestrreturnNonec                 C  s   t || _d S )N)r   load_locale)selfr    r   a/var/www/Datamplify/venv/lib/python3.10/site-packages/pendulum/formatting/difference_formatter.py__init__"   s   zDifferenceFormatter.__init__TFNdiffr   is_nowboolabsolutestr | Locale | Nonec                 C  s  |du r| j nt|}|jdkr d}|j}|jtkr|d7 }n|jtkr4|jt |j	 t
kr4d}d}n|jdkrMd}|j}|jt |j	 tkrL|d7 }n|jdkrad}|j}|j	tkr`|d7 }n}|j	dkrud}|j	}|jtkrt|d7 }ni|jdkrd}|j}n^|jdkrd	}|j}nSt|j  k rtk rn nd
}|j}n@|d}|dur|rtd|S d}|j}	|r|	r|d7 }n|d7 }n|	r|t7 }n|t7 }td|||S d
}|j}|dkrd}|rd| }no|j}	|rd| }|	r|t7 }n]|t7 }nXd}|	r|d| t 7 }n	|d| t 7 }||}
|
s7d| d|| }|||}n
|
|| |}d}|	rK|t7 }n|t7 }td|||S |d|| 7 }td|||S )z
        Formats a difference.

        :param diff: The difference to format
        :param is_now: Whether the difference includes now
        :param absolute: Whether it's an absolute difference or not
        :param locale: The locale to use
        Nr   year   monthweekdayhourminutesecondzcustom.units.few_secondr   customz	.from_nowz.agoztranslations.units.ztranslations.relative.zcustom.units_relative.)r   r   r   yearsmonthsMONTHS_THRESHOLD_FOR_HALF_YEARMONTHS_IN_NEARLY_A_YEARweeksDAYS_OF_WEEKremaining_daysDAYS_THRESHOLD_FOR_HALF_MONTHDAYS_IN_NEARLY_A_MONTHDAYS_THRESHOLD_FOR_HALF_WEEKhoursHOURS_IN_NEARLY_A_DAYminutesFEW_SECONDS_MAXremaining_secondsSECONDS_OF_MINUTEgettcastinvert	KEY_AFTER
KEY_BEFOREformat
KEY_FUTUREKEY_PASTplural)r   r   r   r   r   unitcounttimekey	is_futuretransr   r   r   r?   %   s   


















zDifferenceFormatter.format)r   )r   r   r   r   )TFN)
r   r   r   r   r   r   r   r   r   r   )__name__
__module____qualname____doc__r   r?   r   r   r   r   r      s    r   )
__future__r   typingr:   pendulum.locales.localer   TYPE_CHECKINGpendulumr   r2   r0   r+   r4   r1   r,   r.   r8   r6   r@   rA   r=   r>   r   r   r   r   r   <module>   s&    