ó
    Ý)ÐgV$  ã                   óî   • S r SSKrSSKrSSKJrJrJrJrJrJ	r	  Sr
SSSSS	.r\R                  " S
5      r " S S\5      r " S S\5      rS\S\S\4S jrS\S\SS4S jr " S S5      r " S S5      rg)z'Functions for working with watch files.é    N)ÚIterableÚIteratorÚListÚOptionalÚSequenceÚTextIOé   z[-_]?(\d[\-+\.:\~\da-zA-Z]*)z2(?i)\.(?:tar\.xz|tar\.bz2|tar\.gz|zip|tgz|tbz|txz)zL(?i)\.(?:tar\.xz|tar\.bz2|tar\.gz|zip|tgz|tbz|txz)\.(?:asc|pgp|gpg|sig|sign)z%[\+~](debian|dfsg|ds|deb)(\.)?(\d+)?$)z@ANY_VERSION@z@ARCHIVE_EXT@z@SIGNATURE_EXT@z	@DEB_EXT@zdebian.watchc                   ó   • \ rS rSrSrSrg)ÚMissingVersioné7   zThe version= line is missing.© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú./usr/lib/python3/dist-packages/debian/watch.pyr   r   7   s   † Ü'r   r   c                   ó   • \ rS rSrSrSrg)ÚWatchFileFormatErroré;   z(Raised when the input is not valid.
    r   Nr   r   r   r   r   r   ;   s   † ôr   r   ÚtextÚpackageÚreturnc                 óœ   • [        [        R                  5       5      nXS'   UR                  5        H  u  p4U R                  X45      n M     U $ )z Apply substitutions to a string.

:param text: text to apply substitutions to
:param package: package name, as a string
:return: text with subsitutions applied
z	@PACKAGE@)ÚdictÚSUBSTITUTIONSÚitemsÚreplace)r   r   ÚsubstsÚkÚvs        r   Úexpandr%   @   sF   € ô ”-×%Ñ%Ó'Ó(€Fð "ˆ;ÑØ—‘–‰ˆØ�|‰|˜AÓ!Šñ à€Kr   ÚmsgÚstrictc                 óR   • U(       a  [        U 5      e[        R                  U 5        g ©N)r   ÚloggerÚwarning)r&   r'   s     r   Ú	_complainr,   P   s   € ÞÜ" 3Ó'Ð'Ü
‡N�N�3Õr   c                   óH   • \ rS rSrSrSS\4S jrS rS r\	S	S j5       r
Srg)
Ú	WatchFileéV   z®A Debian watch file.

:ivar entries: list of Watch entries
:ivar options: optional list of global options, applied to all Watch
    entries
:ivar version: watch file version
Nc                 ó<   • X0l         Uc  / nXl        Uc  / nX l        g r)   )ÚversionÚentriesÚoptions)Úselfr2   r3   r1   s       r   Ú__init__ÚWatchFile.__init___   s'   € ð
 ŒØ‰?ØˆGØŒØ‰?ØˆGØ�r   c                 ó,   • [        U R                  5      $ r)   )Úiterr2   ©r4   s    r   Ú__iter__ÚWatchFile.__iter__l   s   € ä�D—L‘LÓ!Ð!r   c                 óÌ  • S nU R                   b  UR                  SU R                   -  5        U R                  (       a$  UR                  U" U R                  5      S-   5        U R                   Hñ  nUR                  (       a$  UR                  U" UR                  5      S-   5        UR                  UR                  5        UR
                  (       a  UR                  SUR
                  -   5        UR                   (       a  UR                  SUR                   -   5        UR                  (       a  UR                  SUR                  -   5        UR                  S5        Mó     g)a'  Write the contents of a watch file to a file-like object.

Note that this will not preserve the formatting of the original file,
and thus it is currently not possible to use this function to
parse and reserialize a file and end up with the same contents.

:param f: File-like object to write to
c                 óV   • SR                  U 5      nSU;   d  SU;   a  SU-   S-   $ SU-   $ )NÚ,Ú Ú	zopts="Ú"úopts=)Újoin)ÚoptsÚss     r   Úserialize_optionsÚ)WatchFile.dump.<locals>.serialize_optionsz   s5   € à—‘˜“ˆAØ�a‹x˜4 1›9Ø !‘| cÑ)Ð)Ø˜Q‘;Ðr   Nzversion=%d
Ú
r?   )r1   Úwriter3   r2   ÚurlÚmatching_patternÚscript)r4   ÚfrF   Úentrys       r   ÚdumpÚWatchFile.dumpp   sí   € ò	ð �<‰<Ñ#Ø�G‰G�N T§\¡\Ñ1Ô2Ø�<�<Ø�G‰GÑ% d§l¡lÓ3°dÑ:Ô;Ø—\”\ˆEØ�}�}Ø—‘Ñ)¨%¯-©-Ó8¸3Ñ>Ô?Ø�G‰G�E—I‘IÔØ×%×%Ø—‘˜˜e×4Ñ4Ñ4Ô5Ø�}�}Ø—‘˜˜eŸm™mÑ+Ô,Ø�|�|Ø—‘˜˜eŸl™lÑ*Ô+Ø�G‰G�DŽMò "r   c                 óf  • / n/ nU H�  nUR                  S5      (       a  M  UR                  5       (       d  M2  UR                  S5      R                  S5      (       a"  UR	                  UR                  S5      5        My  UR	                  U5        UR	                  U5        / nMŸ     U(       a  [        SU5        UR	                  U5        U(       d  gSR                  UR                  S5      5      n UR                  S	S
5      u  pxUR                  5       S:w  a
  [        5       e[        UR                  5       5      n	/ n
/ nU GH˜  nU	S:”  a  U Vs/ s H  oÝR                  5       PM     nnSR                  U5      R                  5       nU(       d  MQ  UR                  S5      (       af  US   S:X  a3  UR                  SS5      nUS:X  a  [        SU-  5      eUSU nX^S
-   S nO USS R                  SS
5      u  põUR                  S5      nO/ nU(       a±   UR                  SS
5      u  nn[        R                  " SU5      nU(       aA  [!        US   5      4[#        UR                  SS
5      5      -   nUS[%        US   5      * S
-
   nO[#        UR                  SS5      5      nUR	                  ['        U/UQ7SU065        GM‡  U
R)                  U5        GM›     U " XºU	S9$ ! [         a    [        5       ef = fs  snf ! [         a    USS nSn GNf = f! [         a    UnSn Nýf = f)a  Parse from the contents that make up a watch file.

:param lines: watch file lines to parse
:return: instance or None if there are no non-comment lines in the file
:raise MissingVersion: if there is no version number declared
:raise ValueError: when syntax errors are encountered
Ú#rH   Ú\z
\z*watchfile ended with \; skipping last lineNÚ r   Ú=é   r1   é   rB   é   rA   é   éÿÿÿÿzNot matching " in %rr>   z/([^/]*\([^/]*\)[^/]*)$é   rD   ©r2   r3   r1   )Ú
startswithÚstripÚrstripÚendswithÚappendr,   rC   ÚpopÚsplitÚ
ValueErrorr   ÚintÚlstripÚindexÚreÚfindallÚstrÚtupleÚlenÚWatchÚextend)ÚclsÚlinesr'   Újoined_linesÚ	continuedÚlineÚ	firstlineÚkeyÚvaluer1   Úpersistent_optionsr2   ÚchunkedÚchunkÚoptendÚopts_strrD   rJ   ÚmÚpartss                       r   Ú
from_linesÚWatchFile.from_lines�   s  € ð ˆØˆ	ÛˆDØ�‰˜s×#Ñ#ÙØ—:‘:—<‘<ÙØ�{‰{˜4Ó ×)Ñ)¨$×/Ñ/Ø× Ñ  §¡¨VÓ!4Ö5à× Ñ  Ô&Ø×#Ñ# IÔ.Ø’	ñ ö äÐCÀVÔLØ×Ñ 	Ô*ÞØØ—G‘G˜L×,Ñ,¨QÓ/Ó0ˆ	ð	#Ø"Ÿ™¨¨aÓ0‰JˆCð �9‰9‹;˜)Ó#Ü Ó"Ð"Ü�e—k‘k“mÓ$ˆØÐØˆÜ#ˆGØ˜‹{ñ 8?Ó?²w¨eŸ<™<ž>±w�Ð?Ø—7‘7˜7Ó#×)Ñ)Ó+ˆDÞÙØ�‰˜w×'Ñ'Ø˜‘7˜c“>Ø!ŸZ™Z¨¨QÓ/�FØ “|Ü(Ð)?À$Ñ)FÓGÐGØ# A f˜~�HØ q¡ 	˜?‘Dð"Ø+/°°¨8¯>©>¸$ÀÓ+BÑ(˜ð  —~‘~ cÓ*‘à�ÞðØ $§
¡
¨4°Ó 3‘I�C˜ô —J’JÐ9¸3Ó?�ÞÜ   1¡›Y˜M¬E°$·*±*¸TÀ1Ó2EÓ,FÑF�EØ˜m¤ A a¡D£	˜z¨!™|Ð,‘Cä! $§*¡*¨T°1Ó"5Ó6�EØ—‘œu SÐ<¨5Ò<°tÑ<×=à"×)Ñ)¨$×/ñM $ñN ØÀñJð 	Jøô] ó 	#Ü Ó"Ð"ð	#üò @øô &ó "Ø#'¨¨ 8˜Ø!›ð"ûô "ó Ø�CØ’Dðús6   Ã5K* ÅLÇ*LÈLË*K?ÌLÌLÌL0Ì/L0r\   )F)r   r   r   r   r   ÚDEFAULT_VERSIONr5   r:   rO   Úclassmethodr~   r   r   r   r   r.   r.   V   s:   † ñð ØØ(ôò"òð@ óNJó óNJr   r.   c                   ó>   • \ rS rSrSr    S	S jrS\4S jrS rSr	g)
rm   éâ   a3  Watch line entry.

This will contain the attributes documented in uscan(1):

:ivar url: The URL (possibly including the filename regex)
:ivar matching_pattern: a filename regex, optional
:ivar version: version policy, optional
:ivar script: script to run, optional
:ivar opts: a list of options, as strings
Nc                 óJ   • Xl         X l        X0l        X@l        Uc  / nXPl        g r)   )rJ   rK   r1   rL   r3   )r4   rJ   rK   r1   rL   rD   s         r   r5   ÚWatch.__init__î   s(   € ð ŒØ 0ÔØŒØŒØ‰<ØˆDØ�r   r   c                 óÂ   • U R                   R                  < SU R                  < SU R                  < SU R                  < SU R
                  < SU R                  < S3$ )NÚ(z, matching_pattern=z
, version=z	, script=z, opts=Ú))Ú	__class__r   rJ   rK   r1   rL   r3   r9   s    r   Ú__repr__ÚWatch.__repr__ý   s<   € ð —‘×'Ô'¨¯¬°4×3HÔ3HØ—”˜dŸkœk¨4¯<¬<ð9ð	:r   c                 ó`  • [        U[        5      (       d  gUR                  U R                  :H  =(       ay    UR                  U R                  :H  =(       aY    UR                  U R                  :H  =(       a9    UR
                  U R
                  :H  =(       a    UR                  U R                  :H  $ )NF)Ú
isinstancerm   rJ   rK   r1   rL   r3   )r4   Úothers     r   Ú__eq__ÚWatch.__eq__  sƒ   € ä˜%¤×'Ñ'ØØ—	‘	˜TŸX™XÑ%÷ .Ø×&Ñ&¨$×*?Ñ*?Ñ?÷.à—‘ §¡Ñ-÷.ð —‘ §¡Ñ+÷.ð —‘ §¡Ñ-ð		/r   )rK   r3   rL   rJ   r1   )NNNN)
r   r   r   r   r   r5   rj   rŠ   r�   r   r   r   r   rm   rm   â   s+   † ñ	ð #'ØØØôð:˜#ô :õ/r   rm   )r   Úloggingrh   Útypingr   r   r   r   r   r   r€   r   Ú	getLoggerr*   Ú	Exceptionr   rd   r   rj   r%   Úboolr,   r.   rm   r   r   r   Ú<module>r–      s´   ðñ$ .ã Û 	÷÷ ð €ð
 5ð Kð	&ð :ñ€ð  
×	Ò	˜>Ó	*€ô(�Yô (ô˜:ô ð
�ð ˜sð  sô ð �3ð  ð ¨ô ÷IJñ IJ÷X)/ò )/r   