o
    íÅ3g›  ã                   @  sð  d Z ddlmZ ddlZddlmZ ejdd… dkr"ddlmZ nddl	mZ esYddl
Z
edƒd:dd„ƒZedƒd;dd„ƒZedƒd<dd„ƒZddlmZ ddlmZmZmZ ejdd… dkriddlmZ nddl	mZ ejdd… dkr”ddlmZmZmZmZmZ ed ƒZd=dd!œd>d,d-„Zndd.lmZ dd/lmZ ejdd… d0kr­ejZnd?d3d4„Zd@d5d6„Zejdd… dkrÍdd7lm Z  dd8lm!Z! n
e"dƒZ dd8l	m!Z! ejdd… d0krìdd9lm#Z#m$Z$m%Z% dS dd9l	m#Z#m$Z$m%Z% dS )Az–
Contains backwards compatibility helpers for different python versions.
If something is relevant to HPI itself, please put it in .hpi_compat instead
é    )ÚannotationsN)ÚTYPE_CHECKINGé   )é   é   )Ú
deprecatedz9use .backup method on sqlite3.Connection directly insteadÚsourceúsqlite3.ConnectionÚdestÚreturnÚNonec                 K  s   | j |fi |¤Ž d S ©N)Úbackup)r   r
   Úkwargs© r   ú(/home/garg/my-data/HPI/my/core/compat.pyÚsqlite_backup   s   r   z3use .removeprefix method on string directly insteadÚtextÚstrÚprefixc                 C  ó
   |   |¡S r   )Úremoveprefix)r   r   r   r   r   r      ó   
r   z3use .removesuffix method on string directly insteadÚsuffixc                 C  r   r   )Úremovesuffix)r   r   r   r   r   r      r   r   )Úcached_property)ÚLiteralÚProtocolÚ	TypedDict)r   é
   )Ú	ParamSpec)r   é	   )ÚAnyÚCallableÚListÚOptionalÚTypeVarÚX)ÚkeyÚaú	list[Any]Úxr"   ÚloÚintÚhiú
int | Noner(   úCallable[..., Any] | Nonec                C  s    |dk rt dƒ‚|d u rt| ƒ}|d u r1||k r/|| d }| | |k r)|d }n|}||k s|S ||k rN|| d }|| | ƒ|k rH|d }n|}||k s5|S )Nr   zlo must be non-negativer   é   )Ú
ValueErrorÚlen)r)   r+   r,   r.   r(   Úmidr   r   r   Úbisect_left:   s&   
ûú
ûr5   )r5   )Údatetime)r   é   Údate_stringr6   c                 C  s$   |   d¡r| d d… d } t | ¡S )NÚZéÿÿÿÿz+00:00)Úendswithr6   Úfromisoformat)r8   r   r   r   r<   ^   s   

r<   c               
   C  s|   ddl m}  tdƒt dddddd	d
| jƒksJ ‚tdƒt ddddddd| jƒks*J ‚tdƒt ddddddd| jƒks<J ‚d S )Nr   ©Útimezonez2020-05-01T10:32:02.925961Ziä  é   r1   r   é    r   i	! z2018-11-28T22:04:01.304Ziâ  r7   é   é   é   i€£ z2020-11-30T00:53:12Zé   é5   é   )r6   r>   r<   Úutcr=   r   r   r   Útest_fromisoformatd   s   
ÿ
ÿÿrH   )ÚNoneType)Ú	TypeAlias)ÚNeverÚassert_neverÚassert_type)r   r	   r
   r	   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   N)r)   r*   r+   r"   r,   r-   r.   r/   r(   r0   r   r-   )r8   r   r   r6   )r   r   )&Ú__doc__Ú
__future__r   ÚsysÚtypingr   Úversion_infoÚwarningsr   Útyping_extensionsÚsqlite3r   r   r   Ú	functoolsr   r   r   r   r    r"   r#   r$   r%   r&   r'   r5   Úbisectr6   r<   rH   ÚtypesrI   rJ   ÚtyperK   rL   rM   r   r   r   r   Ú<module>   sL    

