9GLddlZddlZddlmZmZmZddlZddlZddlmZej dZ dZ Gddej Z e ZdZd Zejfd Zd Zd Zd Zd!dZdZdZdZdddddZdddddZdZdZgdZdeee ffd Z!dS)"N)datetime timedeltatimezone)Tuplez(\d+)(d|h|m|s)ic$eZdZdZdZdZdZdS)_UTCUTCc*tjdSNr datetimelibrselfdts /builddir/build/BUILDROOT/lve-stats-4.3.2-1.el9.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/lib/commons/dateutil.py utcoffsetz_UTC.utcoffset$Q'''cdS)Nr rs rtznamez _UTC.tznamesurc*tjdSr r rs rdstz_UTC.dstrrN)__name__ __module__ __qualname____doc__rrrrrrrrsF I((((((((rrcrtjtj|S)zV Converts date_time from UTC to local time :param date_time: :return: )r fromtimestampcalendartimegm timetuple date_times r gm_to_localr%$s+  !(/)2E2E2G2G"H"H I IIrctjtj|t jS)zQ Converts date_time from local to UTC :param date_time: :return: tz)rrtimemktimer"rutcr#s r local_to_gmr,-s2  !$+i.A.A.C.C"D"D V V VVrcNtj|S)zH Converts utc datetime to timestamp :param dt: :return: )r r!r"rs rgm_datetime_to_unixtimestampr/6s ?2<<>> * **rc8tj|tS)zH Converts timestamp to utc datetime :param ts: :return: r')rrr tss runixtimestamp_to_gm_datetimer3?s  !" - - --rct|dd}|d}|dkrt|S|dkrt|S|dkrt|Std|d ) Nm)minutesh)hoursddayszError: period "zI" is incorrect. Please, specify minutes with m, hours with h, days with d)intr ValueError) period_strtime_num time_types rstr_to_timedeltarBHs:crc?##H2IC****Cx((((Ch''''  4* 4 4 4  rc0|ddS)Nr)second microsecond)replacer.s rround_1mrGWs ::QA: . ..rcR|ptj}|}|dkr&t|dd|fS|dkr9t|dd}|t dz |fS|t |z |fS)z Parses string period (in local time), example values such are 'today', 'yesterday', '5m', '4h', etc :param period_str:str: :param now: :return: todayr)hourminute yesterdayr;)rnowlowerrGrFrrB)r?rNvalrIs r parse_periodrQ[s  C     C g~~ 1 5566;;  !A6677ya((((%//%j111366rc^tt|SN)r%r3 isoformatr1s r ts_to_isorUos% 3B77 8 8 B B D DDrcg}dD]E} tj||cS#t$r}||Yd}~>d}~wwxYwtdg|R)z Parses date time string specified into a naive date time object (timezone unaware), that is expected to be in local time. :param date_str: :return: )z%Y-%m-%dz%Y-%m-%d %H:%Mz%y-%m-%d %H:%Mz%y-%m-%dNz&please use [YY]YY-MM-DD[ HH:MM] format)rstrptimer>append)date_strlast_exfexs r parse_dater]ssG I $Xq11 1 1 1    NN2          = H H H HHs AAAc |S#t$r&|j|j|jdzdzzdzzdzcYSwxYw)z Convert timedelta to seconds :param datetime.timedelta td: timedelta :return int: seconds i@B) total_secondsAttributeError microsecondssecondsr<)tds rconvert_to_secondsrfsi W!!! WWW2:" t0C#Cu"LLQVVVVVWs-AAQr`<rM)r:r8r6srir6r8r:)rdr7r9r<c^|d}td}d}t|D]W\}}|t|dzz }|t|t|zz }|t krt |dX|r|t|krt ||S)a( Return in seconds time period support that format [D[D..]d][H[H..]h][M[M..]m][S[S..]][s] format; D[D..]d - D[D..] days, H[H..]h - H[H..] hours, M[M..]m - M[M..] minutes, S[S..]s - S[S..] seconds :param str period: period line :return int: seconds :raises: ValueError z is incorrect; use today, yesterday or [D[D..]d][H[H..]h][M[M..]m][S[S..]][s] format; D[D..]d - D[D..] days, H[H..]h - H[H..] hours, M[M..]m - M[M..] minutes, S[S..]s - S[S..] secondsrrMz4 is incorrect; period can not be more than 3600 days)r=PARSE_PERIOD_PATTERNfindalllen time_unitsMAX_PERIOD_FOR_PARSINGr>)periodmsg_ time_secondslength_of_matched_stringsdigunits r parse_period2rvs  l l l q66L !)11&99^^ T!SXX\1!C:d#333 0 0 0\\\]] ] 1 4s6{{BB rcVt|dt|dS)a FIXME: we could avoid such extra conversions of units across various our projects if we just use seconds everywhere and convert to other larger units only before show them to end-user. Currently we parse/reconstruct this ~3 times before we use in statsnotifier.py end-code. :param time_dict: like {'period': 5, 'unitOfTime': 'seconds'} :return: str '5s' rp unitOfTime)rv units_of_time) time_dicts rtime_dict_to_secondsr{s, Ih/Yy?V1WYY Z ZZr))r<rg)r9r`)r7rh)rdrMreturncDtD]\}}||zdkr ||z|fcSdS)z Convert provided second number to human view: 60 -> 1, 'minutes' 59 -> 59 , 'seconds' 3601 -> 1, 'hours' :param seconds: Seconds number :return: Tuple (number, english_name) rN)conversion_table)rd human_strrus rseconds_to_human_viewrsJ,.. 4 d?Q  d?I- - - - ..rrS)"r rr rrr)retypingrcompilerkrotzinforr r%r,utcnowr/r3rBrGrQrUr]rfrnryrvr{r~r=strrrrrrs2222222222 "rz"344" ( ( ( ( (;  ( ( ( dffJJJWWW%4HO$5$5++++...   ///7777(EEEIII$ W W W        2 [ [ [ .eCHo . . . . . .r