Ë
    ûmxi¦  ã                   óB  — d Z ddlmZ ddlZddlZddlZddlZddlZ	 ddlm	Z	 ddlmZ dd	lmZ  ej                   e«      Zd
Z ej                  ddd«      Zd„ Zd„ Z G d„ dej.                  «      Z ee¬«      Zy# e
$ r 	 ddlm	Z	 n# e
$ r	  e
d«      ‚w xY wY Œyw xY w)a  File based cache for the discovery document.

The cache is stored in a single file so that multiple processes can
share the same cache. It locks the file whenever accessing to the
file. When the cache content is corrupted, it will be initialized with
an empty cache.
é    )ÚdivisionN)Ú
LockedFilezIfile_cache is unavailable when using oauth2client >= 4.0.0 or google-authé   )Úbaseé   )ÚDISCOVERY_DOC_MAX_AGEz,google-api-python-client-discovery-doc.cachei²  c                 óÆ   — 	 | t         z
  j                  «       S # t        $ r> | t         z
  }|j                  |j                  |j
                  dz  dz  z   dz  z   dz  cY S w xY w)Né   i  i@B )ÚEPOCHÚtotal_secondsÚAttributeErrorÚmicrosecondsÚsecondsÚdays)ÚdateÚdeltas     úa/home/htdocs/ttos/venv/lib/python3.12/site-packages/googleapiclient/discovery_cache/file_cache.pyÚ_to_timestampr   4   sj   € ðØ”u‘×+Ñ+Ó-Ð-øÜò ð ”u‘ˆà×Ñ %§-¡-°%·*±*¸r±/ÀDÑ2HÑ"HÈEÑ!QÑQØñò 	ð	ús   ‚ ™AA ÁA c                 ót  — | j                  «       j                  d«       	 t        j                  | j                  «       «      }|S # t        $ rh i }| j                  «       j                  d«       | j                  «       j                  d«       t        j                  || j                  «       «       Y |S w xY w©Nr   )Úfile_handleÚseekÚjsonÚloadÚ	ExceptionÚtruncateÚdump)ÚfÚcaches     r   Ú_read_or_initialize_cacher    @   s�   € Ø‡M�MƒO×Ñ˜Ôð*Ü—	‘	˜!Ÿ-™-›/Ó*ˆð €Løô ò *ð ˆØ	�‰‹× Ñ  Ô#Ø	�‰‹×Ñ˜QÔÜ�	‰	�%˜Ÿ™›Õ)Ø€Lð*ús   ¡#A ÁA-B7Â6B7c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚCachez/A file based cache for the discovery documents.c                 ó²  — || _         t        j                  j                  t	        j
                  «       t        «      | _        t        | j                  dd«      }	 |j                  «        |j                  «       rt        |«       |j                  «        y# t        $ r!}t        j                  |d¬«       Y d}~Œ6d}~ww xY w# |j                  «        w xY w)zTConstructor.

        Args:
          max_age: Cache expiration in seconds.
        za+ÚrT©Úexc_infoN)Ú_max_ageÚosÚpathÚjoinÚtempfileÚ
gettempdirÚFILENAMEÚ_filer   Úopen_and_lockÚ	is_lockedr    r   ÚLOGGERÚwarningÚunlock_and_close)ÚselfÚmax_ager   Úes       r   Ú__init__zCache.__init__Q   sž   € ð  ˆŒÜ—W‘W—\‘\¤(×"5Ñ"5Ó"7¼ÓBˆŒ
Ü�t—z‘z 4¨Ó-ˆð		!Ø�O‰OÔØ�{‰{Œ}Ü)¨!Ô,ð ×ÑÕ øô ò 	-Ü�N‰N˜1 tˆN×,Ñ,ûð	-ûð ×ÑÕ ús*   Á+B Â	CÂ B<Â7C Â<CÃC ÃCc                 óf  — t        | j                  dd«      }	 |j                  «        |j                  «       rt	        |«      }||v r^|j                  |d«      \  }}t        t        j                  j                  «       «      || j                  z   k  r||j                  «        S 	 |j                  «        y t        j                  d«       	 |j                  «        y # t        $ r!}t        j                  |d¬«       Y d }~nd }~ww xY w	 |j                  «        y # |j                  «        w xY w)Núr+r$   r   ú+Could not obtain a lock for the cache file.Tr%   )r   r.   r/   r0   r    Úgetr   ÚdatetimeÚnowr'   r3   r1   Údebugr   r2   )r4   Úurlr   r   ÚcontentÚtr6   s          r   r;   z	Cache.gete   sû   € Ü�t—z‘z 4¨Ó-ˆð	!Ø�O‰OÔØ�{‰{Œ}Ü1°!Ó4�Ø˜%‘<Ø!&§¡¨3°	Ó!:‘J�G˜QÜ$¤X×%6Ñ%6×%:Ñ%:Ó%<Ó=ÀÀDÇMÁMÑ@QÒQØ&ð ×ÑÕ ð ð ×ÑÕ ô —‘ÐJÔKØð ×ÑÕ øô ò 	-Ü�N‰N˜1 tˆN×,Ñ,ûð	-úØ,à×ÑÕ øˆA×ÑÕ ús0   ™A<C Â8C Ã	D	Ã(DÃ?D ÄD	Ä	D ÄD0c                 ó4  — t        | j                  dd«      }	 |j                  «        |j                  «       rùt	        |«      }|t        t        j                  j                  «       «      f||<   t        |j                  «       «      D ]C  \  }\  }}t        t        j                  j                  «       «      || j                  z   k\  sŒA||= ŒE |j                  «       j                  d«       |j                  «       j                  d«       t        j                  ||j                  «       «       nt         j#                  d«       |j)                  «        y # t$        $ r!}t         j'                  |d¬«       Y d }~Œ6d }~ww xY w# |j)                  «        w xY w)Nr9   r$   r   r:   Tr%   )r   r.   r/   r0   r    r   r<   r=   ÚlistÚitemsr'   r   r   r   r   r   r1   r>   r   r2   r3   )	r4   r?   r@   r   r   ÚkÚ_Ú	timestampr6   s	            r   Úsetz	Cache.setx   s9  € Ü�t—z‘z 4¨Ó-ˆð	!Ø�O‰OÔØ�{‰{Œ}Ü1°!Ó4�Ø%¤}´X×5FÑ5F×5JÑ5JÓ5LÓ'MÐN��c‘
ä)-¨e¯k©k«mÓ)<ò %Ñ%�A‘~˜˜9ä%¤h×&7Ñ&7×&;Ñ&;Ó&=Ó>Ø$ t§}¡}Ñ4ó5ð " !™Hð%ð —‘“×(Ñ(¨Ô+Ø—‘“×$Ñ$ QÔ'Ü—	‘	˜% §¡£Õ1ä—‘ÐJÔKð ×ÑÕ øô ò 	-Ü�N‰N˜1 tˆN×,Ñ,ûð	-ûð ×ÑÕ ús1   ™B0E Ã
A=E Å	FÅ!E=Å8F Å=FÆF ÆFN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r7   r;   rH   © ó    r   r"   r"   N   s   „ Ù9ò!ò(!ó&!rN   r"   )r5   )rL   Ú
__future__r   r<   r   Úloggingr(   r+   Ú oauth2client.contrib.locked_filer   ÚImportErrorÚoauth2client.locked_fileÚ r   Údiscovery_cacher   Ú	getLoggerrI   r1   r-   r   r   r    r"   r   rM   rN   r   ú<module>rW      sÃ   ðñõ  ã Û Û Û 	Û ð

Ý;õ Ý 3à	ˆ×	Ñ	˜8Ó	$€à9€Øˆ×Ñ˜$  1Ó%€ò	òô@!ˆD�J‰Jô @!ñF 	Ð+Ô,�øða ò 
ð
Þ7øØò 
áØWó
ð 	
ð
úñ 	8ð
ús)   žA= Á=BÂB
Â	BÂ
BÂBÂB