§
    :?Äj¦  ã                   óF  — 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	 n'# e
$ r 	 ddlm	Z	 n# e
$ r  e
d¦  «        ‚w xY wY nw xY w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dS )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
                       ¦   «         S # t          $ r0 | 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     ú[C:\Projects\Historical\venv\Lib\site-packages\googleapiclient/discovery_cache/file_cache.pyÚ_to_timestampr   4   s|   € ðØ•u‘×+Ò+Ñ-Ô-Ð-øÝð ð ð ð •u‘ˆàÔ %¤-°%´*¸r±/ÀDÑ2HÑ"HÈEÑ!QÑQØñð 	ð 	ð 	ð	øøøs   ‚ ž7AÁAc                 ó²  — |                       ¦   «                              d¦  «         	 t          j        |                       ¦   «         ¦  «        }n‡# t          $ rz i }|                       ¦   «                              d¦  «         |                       ¦   «                              d¦  «         t          j        ||                       ¦   «         ¦  «         Y nw xY w|S ©Nr   )Úfile_handleÚseekÚjsonÚloadÚ	ExceptionÚtruncateÚdump)ÚfÚcaches     r   Ú_read_or_initialize_cacher    @   s½   € Ø‡M‚M�O„O×Ò˜ÑÔÐð*Ý”	˜!Ÿ-š-™/œ/Ñ*Ô*ˆˆøÝð *ð *ð *ð ˆØ	�Š‰Œ× Ò  Ñ#Ô#Ð#Ø	�Š‰Œ×Ò˜QÑÔÐÝŒ	�%˜Ÿš™œÑ)Ô)Ð)Ð)Ð)ð*øøøð €Ls   ©&A ÁBCÃCc                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚCachez/A file based cache for the discovery documents.c                 óè  — || _         t          j                             t	          j        ¦   «         t          ¦  «        | _        t          | j        dd¦  «        }	 | 	                    ¦   «          | 
                    ¦   «         rt          |¦  «         n3# t          $ r&}t                               |d¬¦  «         Y d}~nd}~ww xY w|                     ¦   «          dS # |                     ¦   «          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—\’\¥(Ô"5Ñ"7Ô"7½ÑBÔBˆŒ
Ý�t”z 4¨Ñ-Ô-ˆð		!Ø�OŠOÑÔÐØ�{Š{‰}Œ}ð -Ý)¨!Ñ,Ô,Ð,øøõ ð 	-ð 	-ð 	-Ý�NŠN˜1 tˆNÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,øøøøð	-øøøð ×ÒÑ Ô Ð Ð Ð øˆA×ÒÑ Ô Ð Ð øøøs0   Á7B ÂC Â
CÂB=Â8C Â=CÃC ÃC1c                 óÈ  — t          | j        dd¦  «        }	 |                     ¦   «          |                     ¦   «         r�t	          |¦  «        }||v rf|                     |d¦  «        \  }}t          t          j                             ¦   «         ¦  «        || j	        z   k     r|| 
                    ¦   «          S 	 | 
                    ¦   «          d S t                               d¦  «         	 | 
                    ¦   «          d S # t          $ r&}t                               |d¬¦  «         Y d }~nd }~ww xY w	 | 
                    ¦   «          d S # | 
                    ¦   «          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   st  € Ý�t”z 4¨Ñ-Ô-ˆð	!Ø�OŠOÑÔÐØ�{Š{‰}Œ}ð 	Ý1°!Ñ4Ô4�Ø˜%�<�<Ø!&§¢¨3°	Ñ!:Ô!:‘J�G˜QÝ$¥XÔ%6×%:Ò%:Ñ%<Ô%<Ñ=Ô=ÀÀDÄMÑ@QÒQÐQØ&ð ×ÒÑ Ô Ð Ð ð ð ×ÒÑ Ô Ð Ð Ð õ —’ÐJÑKÔKÐKØð ×ÒÑ Ô Ð Ð Ð øõ ð 	-ð 	-ð 	-Ý�NŠN˜1 tˆNÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,øøøøð	-øøøØ,à×ÒÑ Ô Ð Ð Ð øˆA×ÒÑ Ô Ð Ð øøøs0   ˜BD ÃD Ä
D1ÄD,Ä'E Ä,D1Ä1E ÅE!c                 ó®  — t          | j        dd¦  «        }	 |                     ¦   «          |                     ¦   «         �rt	          |¦  «        }|t          t          j                             ¦   «         ¦  «        f||<   t          | 	                    ¦   «         ¦  «        D ]B\  }\  }}t          t          j                             ¦   «         ¦  «        || j
        z   k    r||= ŒC|                     ¦   «                              d¦  «         |                     ¦   «                              d¦  «         t          j        ||                     ¦   «         ¦  «         nt                                d¦  «         n3# t$          $ r&}t                                |d¬¦  «         Y d }~nd }~ww xY w|                     ¦   «          d S # |                     ¦   «          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   s¬  € Ý�t”z 4¨Ñ-Ô-ˆð	!Ø�OŠOÑÔÐØ�{Š{‰}Œ}ñ LÝ1°!Ñ4Ô4�Ø%¥}µXÔ5F×5JÒ5JÑ5LÔ5LÑ'MÔ'MÐN��c‘
å)-¨e¯kªk©m¬mÑ)<Ô)<ð %ð %Ñ%�A‘~˜˜9å%¥hÔ&7×&;Ò&;Ñ&=Ô&=Ñ>Ô>Ø$ t¤}Ñ4ò5ð 5ð " !˜HøØ—’‘”×(Ò(¨Ñ+Ô+Ð+Ø—’‘”×$Ò$ QÑ'Ô'Ð'Ý”	˜% §¢¡¤Ñ1Ô1Ð1Ð1å—’ÐJÑKÔKÐKøøÝð 	-ð 	-ð 	-Ý�NŠN˜1 tˆNÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,øøøøð	-øøøð ×ÒÑ Ô Ð Ð Ð øˆA×ÒÑ Ô Ð Ð øøøs0   ˜EE5 Å4F> Å5
F%Å?F ÆF> Æ F%Æ%F> Æ>GN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r7   r;   rH   © ó    r   r"   r"   N   sG   € € € € € Ø9Ð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˜  ððð ð  Ð Ð Ð Ð Ð à €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€ð

Ø;Ð;Ð;Ð;Ð;Ð;Ð;øØð 
ð 
ð 
ð
Ø7Ð7Ð7Ð7Ð7Ð7Ð7øØð 
ð 
ð 
àˆkØWñ
ô 
ð 	
ð
øøøð 	8Ð7ð
øøøð Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3à	ˆÔ	˜8Ñ	$Ô	$€à9€ØˆÔ˜$  1Ñ%Ô%€ð	ð 	ð 	ðð ð ð@!ð @!ð @!ð @!ð @!ˆDŒJñ @!ô @!ð @!ðF 	ˆÐ+Ð,Ñ,Ô,€€€s#   ž% ¥A	«2±A	²AÁA	ÁA	