§
    )uyc=%  ã                   ó  — d Z ddlZddlZ	 ddlmZmZmZmZmZm	Z	m
Z
 n# e$ r Y nw xY wdZddddd	œZ ej        d
¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd„ Zd„ Z G d„ de¦  «        Z G d„ de¦  «        ZdS )z'Functions for working with watch files.é    N)ÚIterableÚIteratorÚListÚOptionalÚSequenceÚTextIOÚTupleé   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                   ó   — e Zd ZdZdS )ÚMissingVersionzThe version= line is missing.N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ú./usr/lib/python3/dist-packages/debian/watch.pyr   r   =   s   € € € € € Ø'Ð'Ð'Ð'r   r   c                   ó   — e Zd ZdZdS )ÚWatchFileFormatErrorz(Raised when the input is not valid.
    Nr   r   r   r   r   r   A   s   € € € € € ðð ð ð r   r   c                 ó¼   — t          t                               ¦   «         ¦  «        }||d<   |                     ¦   «         D ]\  }}|                      ||¦  «        } Œ| S )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)ÚtextÚpackageÚsubstsÚkÚvs        r   Úexpandr!   F   s^   € õ •-×%Ò%Ñ'Ô'Ñ(Ô(€Fð "€Fˆ;ÑØ—’‘”ð "ð "‰ˆˆ1Ø�|Š|˜A˜qÑ!Ô!ˆˆØ€Kr   c                 ó\   — |rt          | ¦  «        ‚t                               | ¦  «         d S ©N)r   ÚloggerÚwarning)ÚmsgÚstricts     r   Ú	_complainr(   W   s0   € àð (Ý" 3Ñ'Ô'Ð'Ý
‡N‚N�3ÑÔÐÐÐr   c                   óD   — e Zd ZdZddefd„Zd„ Zd„ Zedd„¦   «         Z	dS )	Ú	WatchFilezÂ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                 ó@   — || _         |€g }|| _        |€g }|| _        d S r#   )ÚversionÚentriesÚoptions)Úselfr-   r.   r,   s       r   Ú__init__zWatchFile.__init__g   s1   € ð
 ˆŒØˆ?ØˆGØˆŒØˆ?ØˆGØˆŒˆˆr   c                 ó*   — t          | j        ¦  «        S r#   )Úiterr-   ©r/   s    r   Ú__iter__zWatchFile.__iter__t   s   € å�D”LÑ!Ô!Ð!r   c                 óR  — d„ }| j         �|                     d| j         z  ¦  «         | j        r&|                      || j        ¦  «        dz   ¦  «         | j        D ]Ê}|j        r&|                      ||j        ¦  «        dz   ¦  «         |                     |j        ¦  «         |j        r|                     d|j        z   ¦  «         |j         r|                     d|j         z   ¦  «         |j        r|                     d|j        z   ¦  «         |                     d¦  «         ŒËdS )aO  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   — d                      | ¦  «        }d|v sd|v rd|z   dz   S d|z   S )Nú,ú ú	zopts="ú"úopts=)Újoin)ÚoptsÚss     r   Úserialize_optionsz)WatchFile.dump.<locals>.serialize_options‚   s;   € à—’˜‘”ˆAØ�aˆxˆx˜4 1˜9˜9Ø !‘| cÑ)Ð)Ø˜Q‘;Ðr   Nzversion=%d
ú
r8   )r,   Úwriter.   r-   ÚurlÚmatching_patternÚscript)r/   Úfr?   Úentrys       r   ÚdumpzWatchFile.dumpx   s>  € ð	ð 	ð 	ð Œ<Ð#Ø�GŠG�N T¤\Ñ1Ñ2Ô2Ð2ØŒ<ð 	<Ø�GŠGÐ%Ð% d¤lÑ3Ô3°dÑ:Ñ;Ô;Ð;Ø”\ð 
	ð 
	ˆEØŒ}ð @Ø—’Ð)Ð)¨%¬-Ñ8Ô8¸3Ñ>Ñ?Ô?Ð?Ø�GŠG�E”IÑÔÐØÔ%ð 6Ø—’˜˜eÔ4Ñ4Ñ5Ô5Ð5ØŒ}ð -Ø—’˜˜eœmÑ+Ñ,Ô,Ð,ØŒ|ð ,Ø—’˜˜eœlÑ*Ñ+Ô+Ð+Ø�GŠG�D‰MŒMˆMˆMð
	ð 
	r   Fc                 ó.  — g }g }|D ]ª}|                      d¦  «        rŒ|                     ¦   «         sŒ-|                     d¦  «                             d¦  «        r)|                     |                     d¦  «        ¦  «         Œ~|                     |¦  «         |                     |¦  «         g }Œ«|r%t          d|¦  «         |                     |¦  «         |sdS d                     |                     d¦  «        ¦  «        }	 |                     d	d
¦  «        \  }}n# t          $ r t          ¦   «         ‚w xY w|                     ¦   «         dk    rt          ¦   «         ‚t          |                     ¦   «         ¦  «        }	g }
g }|D �]þ}|	dk    rd„ |D ¦   «         }d                     |¦  «                             ¦   «         }|sŒ?|                      d¦  «        r§|d         dk    rF|                     dd¦  «        }|dk    rt          d|z  ¦  «        ‚|d|…         }||d
z   d…         }n?	 |dd…                              dd
¦  «        \  }}n# t          $ r |dd…         }d}Y nw xY w|                     d¦  «        }ng }|rê	 |                     dd
¦  «        \  }}n# t          $ r |}d}Y nw xY wt          j        d|¦  «        }|r\t          |d         ¦  «        ft!          |                     dd
¦  «        ¦  «        z   }|dt#          |d         ¦  «         d
z
  …         }n#t!          |                     dd¦  «        ¦  «        }|                     t%          |g|¢R d|iŽ¦  «         �Œé|
                     |¦  «         �Œ  | ||
|	¬¦  «        S )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
        ú#r@   ú\z
\z*watchfile ended with \; skipping last lineNÚ r   ú=é   r,   é   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )Úlstrip)Ú.0Úchunks     r   ú
<listcomp>z(WatchFile.from_lines.<locals>.<listcomp>Ã   s    € Ð?Ð?Ð?¨e˜5Ÿ<š<™>œ>Ð?Ð?Ð?r   r;   é   r:   é   éÿÿÿÿzNot matching " in %rr7   z/([^/]*\([^/]*\)[^/]*)$é   r=   )r-   r.   r,   )Ú
startswithÚstripÚrstripÚendswithÚappendr(   r<   ÚpopÚsplitÚ
ValueErrorr   ÚintÚindexÚreÚfindallÚstrÚtupleÚlenÚWatchÚextend)ÚclsÚlinesr'   Újoined_linesÚ	continuedÚlineÚ	firstlineÚkeyÚvaluer,   Úpersistent_optionsr-   ÚchunkedÚoptendÚopts_strr=   rB   ÚmÚpartss                      r   Ú
from_lineszWatchFile.from_lines˜   s  € ð ˆØˆ	Øð 
	ð 
	ˆDØ�Š˜sÑ#Ô#ð ØØ—:’:‘<”<ð ØØ�{Š{˜4Ñ Ô ×)Ò)¨$Ñ/Ô/ð Ø× Ò  §¢¨VÑ!4Ô!4Ñ5Ô5Ð5Ð5à× Ò  Ñ&Ô&Ð&Ø×#Ò# IÑ.Ô.Ð.Ø�	�	Øð 	+åÐCÀVÑLÔLÐLØ×Ò 	Ñ*Ô*Ð*Øð 	Ø�4Ø—G’G˜L×,Ò,¨QÑ/Ô/Ñ0Ô0ˆ	ð	#Ø"Ÿš¨¨aÑ0Ô0‰JˆC��øÝð 	#ð 	#ð 	#Ý Ñ"Ô"Ð"ð	#øøøà�9Š9‰;Œ;˜)Ò#Ð#Ý Ñ"Ô"Ð"Ý�e—k’k‘m”mÑ$Ô$ˆØÐØˆØ#ð &	0ñ &	0ˆGØ˜Š{ˆ{ð @Ð?°wÐ?Ñ?Ô?�Ø—7’7˜7Ñ#Ô#×)Ò)Ñ+Ô+ˆDØð ØØ�Š˜wÑ'Ô'ð Ø˜”7˜c’>�>Ø!ŸZšZ¨¨QÑ/Ô/�FØ ’|�|Ý(Ð)?À$Ñ)FÑGÔGÐGØ# A f Hœ~�HØ  q¡ 	 	œ?�D�Dð"Ø+/°°°¬8¯>ª>¸$ÀÑ+BÔ+BÑ(˜ 4 4øÝ%ð "ð "ð "Ø#'¨¨¨¤8˜Ø!˜˜˜ð"øøøð  —~’~ cÑ*Ô*��à�Øð 0ðØ $§
¢
¨4°Ñ 3Ô 3‘I�C˜˜øÝ!ð ð ð Ø�CØ�D�D�Dðøøøõ ”JÐ9¸3Ñ?Ô?�Øð 7Ý   1¤™YœY˜M­E°$·*²*¸TÀ1Ñ2EÔ2EÑ,FÔ,FÑF�EØ˜m¥ A a¤D¡	¤	˜z¨!™|˜mÔ,�C�Cå! $§*¢*¨T°1Ñ"5Ô"5Ñ6Ô6�EØ—’�u SÐ<¨5Ð<Ð<Ð<°tÐ<Ð<Ñ=Ô=Ð=Ñ=à"×)Ò)¨$Ñ/Ô/Ð/Ñ/ØˆsØÐ%7ÀðJñ Jô Jð 	Js0   ÄD  Ä D9È0!IÉI+É*I+Ê	J#Ê#J4Ê3J4)F)
r   r   r   r   ÚDEFAULT_VERSIONr0   r4   rG   Úclassmethodrw   r   r   r   r*   r*   ^   sˆ   € € € € € ðð ð ØØ(ðð ð ð ð"ð "ð "ðð ð ð@ ðNJð NJð NJñ „[ðNJð NJð NJr   r*   c                   ó.   — e Zd ZdZ	 	 	 	 dd„Zd„ Zd„ ZdS )rg   aO  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                 óT   — || _         || _        || _        || _        |€g }|| _        d S r#   )rB   rC   r,   rD   r.   )r/   rB   rC   r,   rD   r=   s         r   r0   zWatch.__init__ö   s6   € ð ˆŒØ 0ˆÔØˆŒØˆŒØˆ<ØˆDØˆŒˆˆr   c                 óp   — | j         j        ›d| j        ›d| j        ›d| j        ›d| j        ›d| j        ›d�S )Nú(z, matching_pattern=z
, version=z	, script=z, opts=ú))Ú	__class__r   rB   rC   r,   rD   r.   r3   s    r   Ú__repr__zWatch.__repr__  sH   € ð ”Ô'Ð'Ð'¨¬¨¨°4Ô3HÐ3HÐ3HØ”��˜dœk˜k˜k¨4¬<¨<¨<ð9ð	:r   c                 óÐ   — t          |t          ¦  «        sdS |j        | j        k    o?|j        | j        k    o/|j        | j        k    o|j        | j        k    o|j        | j        k    S )NF)Ú
isinstancerg   rB   rC   r,   rD   r.   )r/   Úothers     r   Ú__eq__zWatch.__eq__  st   € å˜%¥Ñ'Ô'ð 	Ø�5Ø”	˜TœXÒ%ð .ØÔ&¨$Ô*?Ò?ð.à” ¤Ò-ð.ð ” ¤Ò+ð.ð ” ¤Ò-ð		/r   )NNNN)r   r   r   r   r0   r€   r„   r   r   r   rg   rg   ê   s^   € € € € € ð	ð 	ð #'ØØØðð ð ð ð:ð :ð :ð/ð /ð /ð /ð /r   rg   )r   Úloggingrb   Útypingr   r   r   r   r   r   r	   ÚImportErrorrx   r   Ú	getLoggerr$   Ú	Exceptionr   r_   r   r!   r(   Úobjectr*   rg   r   r   r   ú<module>r‹      sÂ  ðð$ .Ð -à €€€Ø 	€	€	€	ð	ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øð ð 	ð 	ð 	à€Dð	øøøð
 €ð
 5ð Kð	&ð :ðð €ð  
ˆÔ	˜>Ñ	*Ô	*€ð(ð (ð (ð (ð (�Yñ (ô (ð (ðð ð ð ð ˜:ñ ô ð ð
ð ð ð"ð ð ðIJð IJð IJð IJð IJ�ñ IJô IJð IJðX*/ð */ð */ð */ð */ˆFñ */ô */ð */ð */ð */s   Œ Ÿ'¦'