HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/self/root/usr/lib/python3/dist-packages/aptsources/__pycache__/
Upload File :
Current File : //proc/self/root/usr/lib/python3/dist-packages/aptsources/__pycache__/sourceslist.cpython-311.pyc
�

�xkd�e���ddlmZmZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZmZmZmZmZmZmZddlZddlmZmZddlmZed��Zgd�Zd	ed
edefd�Z d
eedeefd�Z!Gd�de"��Z#Gd�de"��Z$dedefd�Z%Gd�d��Z&Gd�d��Z'ee'e&fZ(Gd�de)��Z*Gd�de)��Z+Gd�de)��Z,e-dkr�ej.��e+��Z/e/D]'Z0ej1d e0���z���(e d!d"��Z2ej1d#e2z��ej1e d$d"����ej1e d!d%����dSdS)&�)�absolute_import�print_functionN)
�Any�Dict�Callable�Iterable�Iterator�List�Optional�Tuple�TypeVar�Union�)�DistInfo�Template)�_deb822�T)�	is_mirror�Deb822SourceEntry�SourceEntry�NullMatcher�SourcesList�SourceEntryMatcher�
master_uri�compare_uri�returnc�P�|�d��}|�d��}||krdS	|�d��d}|�d��d}n#t$rYdSwxYwd|vr&||�d��dzd�|krdSdS)z�check if the given add_url is idential or a mirror of orig_uri e.g.:
    master_uri = archive.ubuntu.com
    compare_uri = de.archive.ubuntu.com
    -> True
    z/ Tz//rF�.N)�rstrip�split�
IndexError�index)rr�compare_srv�
master_srvs    �8/usr/lib/python3/dist-packages/aptsources/sourceslist.pyrrDs����$�$�T�*�*�K��"�"�4�(�(�J��j� � ��t��!�'�'��-�-�a�0���%�%�d�+�+�A�.�
�
�������u�u������k���k�+�*;�*;�C�*@�*@�1�*D�*F�*F�G�:�U�U��t��5s�6A+�+
A9�8A9�sc�:�tt|����S)a-simple and efficient way to return uniq collection

    This is not intended for use with a SourceList. It is provided
    for internal use only. It does not have a leading underscore to
    not break any old code that uses it; but it should not be used
    in new code (and is not listed in __all__).)�list�set)r&s r%�uniqr*as����A���<�<��c�n�eZdZdedefd�Z	ddddeedeefd	�Zddd
eeddfd�ZdS)
�SingleValueProperty�key�docc�"�||_||_dS�N�r.�__doc__��selfr.r/s   r%�__init__zSingleValueProperty.__init__l����������r+N�objr�objtyperc�B�|j�|jd��Sr1)�section�getr.�r5r8r9s   r%�__get__zSingleValueProperty.__get__ps���{���t�x��.�.�.r+�valuec�F�|�|j|j=dS||j|j<dSr1)r;r.)r5r8r?s   r%�__set__zSingleValueProperty.__set__us-���=���D�H�%�%�%�$)�C�K���!�!�!r+r1)	�__name__�
__module__�__qualname__�strr6r�typer>rA�r+r%r-r-ks��������C��c�����
CG�/�/�&�/�19�$��/�	�#��/�/�/�/�
*�.�*�x��}�*��*�*�*�*�*�*r+r-c�n�eZdZdedefd�Z	ddddeedeefd	�Zddd
eeddfd�Z	dS)
�MultiValuePropertyr.r/c�"�||_||_dSr1r2r4s   r%r6zMultiValueProperty.__init__}r7r+Nr8rr9rc�r�t�|j�|jd����S�N�)r�mysplitr;r<r.r=s   r%r>zMultiValueProperty.__get__�s*���"�"�3�;�?�?�4�8�R�#@�#@�A�A�Ar+�valuesc�J�d�|��|j|j<dS)N� )�joinr;r.)r5r8rOs   r%rAzMultiValueProperty.__set__�s"�� #���� 0� 0���D�H���r+r1)
rBrCrDrEr6rrFr
r>rArGr+r%rIrI|s��������C��c�����
CG�B�B�&�B�19�$��B�	
�c��B�B�B�B�
1�.�1��S�	�1�d�1�1�1�1�1�1r+rI�propc��|Sr1rG)rSs r%�DeprecatedPropertyrU�s���Kr+c��eZdZdeeejefdefd�Zde	de	fd�Z
edd��Zed	d
��Z
eed	d
����Zedd��Zeedd����Zed
d��Zeed
d����Zedd��Zedefd���Zejdeddfd���Zedeefd���Zejdeeddfd���Zedefd���Zejdeddfd���Zedefd���Zedefd���Zdefd�Zdefd�Zdeddfd�ZdS) rr;�filec��|�tjd��|_n6t|t��rtj|��|_n||_t	|j��|_||_d|_dSrL)r�Sectionr;�
isinstancerE�_linerW�template)r5r;rWs   r%r6zDeb822SourceEntry.__init__�si���?�"�?�2�.�.�D�L�L�
���
%�
%�	#�"�?�7�3�3�D�L�L�"�D�L����&�&��
���	�,0��
�
�
r+�otherrc��|j|jkol|j|jko\|joU|j�d��|j�d��ko|j|jko|j|jkS�z+equal operator for two sources.list entries�/��disabledrF�urir�dist�comps�r5r]s  r%�__eq__zDeb822SourceEntry.__eq__�s���
�M�U�^�+�
*��	�U�Z�'�
*���
*������$�$��	�(8�(8��(=�(=�=�
*��	�U�Z�'�	
*�
�
�e�k�)�
	
r+�
ArchitectureszThe list of architectures�TypeszThe list of types�URIszURIs in the source�SuiteszSuites in the source�
ComponentszComponents in the sourcec��|jjS)�1Legacy attribute describing the paragraph header.�r;�header�r5s r%�commentzDeb822SourceEntry.comment�s���|�"�"r+rrNc��||j_dS)rnNro)r5rrs  r%rrzDeb822SourceEntry.comment�s��&�����r+c�d�	tj|jd��S#t$rYdSwxYw)N�Trusted)�apt_pkg�string_to_boolr;�KeyErrorrqs r%�trustedzDeb822SourceEntry.trusted�sA��	��)�$�,�y�*A�B�B�B���	�	�	��4�4�	���s�!�
/�/r?c�^�|�	|jd=dS#t$rYdSwxYw|rdnd|jd<dS)Nru�yes�no�r;rx�r5r?s  r%ryzDeb822SourceEntry.trusted�s[���=�
��L��+�+�+���
�
�
����
����05�&>�e�e�$�D�L��#�#�#s��
�c�^�tj|j�dd����S)zCheck if Enabled: no is set.�Enabledr{)rvrwr;r<rqs r%rbzDeb822SourceEntry.disabled�s*���)�$�,�*:�*:�9�e�*L�*L�M�M�M�Mr+c�V�|rd|jd<dS	|jd=dS#t$rYdSwxYw)Nr|r�r}r~s  r%rbzDeb822SourceEntry.disabled�sS���	�&*�D�L��#�#�#�
��L��+�+�+���
�
�
����
���s��
(�(c��|jS)z7A section is invalid if it doesn't have proper entries.)r;rqs r%�invalidzDeb822SourceEntry.invalid�s���<��r+c��|jS)z The entire (original) paragraph.)r[rqs r%�linezDeb822SourceEntry.line�s���z�r+c�N�|������Sr1�rE�striprqs r%�__str__zDeb822SourceEntry.__str__�s���x�x�z�z���!�!�!r+c�*�t|j��S)z(Section as a string, newline terminated.)rEr;rqs r%rEzDeb822SourceEntry.str�s���4�<� � � r+�enabledc��||_dS)z.Deprecated (for deb822) accessor for .disabledN)rb)r5r�s  r%�set_enabledzDeb822SourceEntry.set_enabled�s��#���
�
�
r+) rBrCrDrrrrYrEr6rrgrI�
architectures�typesrUr-rF�urisrc�suitesrdre�propertyrr�setter�boolryrbr�r�r�r�rGr+r%rr�s�������
1���w���/C�)D� E�
1�S�
1�
1�
1�
1�

�C�

�C�

�

�

�

�'�&��8S�T�T�M���w�(;�<�<�E���1�1�'�;N�O�O�P�P�D���f�&:�;�;�D�
�
�0�0��9M�N�N�
O�
O�C�
�
��*@�
A�
A�F���1�1�(�<R�S�S�T�T�D���|�-G�H�H�E�
�#��#�#�#��X�#�
�^�&�s�&�t�&�&�&��^�&����$������X��
�^�?�X�d�^�?��?�?�?��^�?��N�$�N�N�N��X�N��_��d��t�����_��� �� � � ��X� ���c�����X��"��"�"�"�"�!�S�!�!�!�!�$�4�$�D�$�$�$�$�$�$r+rc��eZdZdZddedeefd�Zdedefd�Ze	dede
efd	���Zdeddfd
�Zde
ddfd�Zdefd
�Zdefd�ZdS)rzsingle sources.list entryNr�rWc�h�d|_d|_d|_g|_d|_d|_d|_g|_d|_||_	|�?tj�d��tj�
d��z}||_|�|��d|_g|_dS)NFrMzDir::Etc�Dir::Etc::sourcelist)r�rbrFr�ryrcrdrerrr�rv�config�find_dir�findrW�parser\�children)r5r�rWs   r%r6zSourceEntry.__init__�s��������
���	�(*���'+��������	� "��
������	��<��>�*�*�:�6�6���9L�9L�&�:�:��D���	��
�
�4����,0��
�+-��
�
�
r+r]rc���|j|jkoe|j|jkoU|j�d��|j�d��ko|j|jko|j|jkSr_rarfs  r%rgzSourceEntry.__eq__sw��
�M�U�^�+�
*��	�U�Z�'�
*������$�$��	�(8�(8��(=�(=�=�
*��	�U�Z�'�
*��
�e�k�)�	
r+c�H�|���}g}d}d}d}tt|����D]�}||dkr2|r"d}d}|�|��||}�2d}|||z
}�@||dkrd}|||z
}�Z|r:||���s d}|�|��||}��||���r|sd}��|||z
}��t|��dkr|�|��|S)z|a split() implementation that understands the sources.list
        format better and takes [] into account (for e.g. cdroms)rMF�[T�]r)r��range�len�append�isspace)r��pieces�tmp�p_found�space_found�is      r%rNzSourceEntry.mysplitsK���z�z�|�|�����������s�4�y�y�!�!�	�	�A��A�w�#�~�~��#�"'�K�"�G��M�M�#�&�&�&��q�'�C�C�"�G��4��7�N�C�C��a��C������t�A�w�����	
�T�!�W�_�_�%6�%6�	
�#���
�
�c�"�"�"��1�g����a����"�"�
�7�
�"����t�A�w�����s�8�8�a�<�<��M�M�#�����
r+c��||_|���}|dks|dkr	d|_dS|ddkrRd|_|dd�������}|ddvr	d|_dS|dd�}|�d��}|dkr||dzd�|_|d|�}|�|��}t|��dkr	d|_dS|d���|_	|j	d	vr	d|_dS|d���dd
kr�|�
d���d�����}|D]{}	|�dd��\}}|d
kr|�d��|_�=|dkrtj
|��|_�]d|_�e#t$r
d|_Y�xwxYw|d���|_t|j��dkrd|_|d���|_t|��dkr|dd�|_dSg|_dS)zXparse a given sources.list (textual) line and break it up
        into the field we haverM�#TNrr)�rpm�rpm-src�deb�deb-src�)r�r�r�r�r�z[]�=�arch�,ry�)r�r�r�rbr r�rrrNr�rF�popr�rvrwry�	Exceptionrcrdre)r5r�r�r��options�optionr.r?s        r%r�zSourceEntry.parse7s�����	��z�z�|�|���2�:�:������D�L��F���7�c�>�>� �D�M��!�"�"�X�^�^�%�%�+�+�-�-�F��!�9� D�D�D�#������A�B�B�x���I�I�c�N�N���q�5�5���A����=�D�L�����8�D����d�#�#���v�;�;��?�?��D�L��F��1�I�O�O�%�%��	��9�@�@�@��D�L��F��!�9�?�?���Q��3�&�&��j�j��m�m�)�)�$�/�/�5�5�7�7�G�!�
,�
,��
,�!'���c�1�!5�!5�J�C���f�}�}�-2�[�[��-=�-=��*�*��	�)�)�'.�'=�e�'D�'D����'+�����!�(�(�(�#'�D�L�L�L�(�����!�9�?�?�$�$����t�x�=�=�1����D�L��1�I�O�O�%�%��	��v�;�;��?�?������D�J�J�J��D�J�J�Js�G-�-H�H�	new_valuec���||_|r3|j����d��|_dS|j���ddkrd|jz|_dSdS)z!set a line to enabled or disabledr�rN)rbr��lstripr�)r5r�s  r%r�zSourceEntry.set_enabledwsq��%�
��
��	,��	�(�(�*�*�1�1�#�6�6�D�I�I�I��y��� � ��#�s�*�*��$�)�O��	�	�	�+�*r+c�N�|������S)zdebug helperr�rqs r%r�zSourceEntry.__str__�s���x�x�z�z���!�!�!r+c��|jr|jSd}|jrd}||jz
}|jr5|j�.|dd�|j���d|jrdnd�d	�z
}n@|j�|d
|jrdndzz
}n'|jr |dd�|j��zz
}|d|j�d|j��z
}t|j
��d
kr |dd�|j
��zz
}|jdkr
|d|jzz
}|dz
}|S)z!return the current line as stringrMz# Nz [arch=r�z	 trusted=r{r|r�z
 [trusted=%s]z
 [arch=%s]rQrz #�
)r�r�rbrFr�ryrRrcrdr�rerr)r5r�s  r%rEzSourceEntry.str�sM���<�	��9�����=�	��D���	�����	@�$�,�":��D�����+�,�,�,�,���/���4�/�/��
�D�D��\�
%��O���'F�u�u�$�G�G�D�D�
�
�	@��L�3�8�8�D�,>�#?�#?�?�?�D���D�H�H�H�d�i�i�0�0���t�z�?�?�Q����C�#�(�(�4�:�.�.�.�.�D��<�2����D�4�<�'�'�D������r+r1)rBrCrDr3rErr6rrg�staticmethodr
rNr�r�r�r�rGr+r%rr�s������#�#�.�.�S�.���
�.�.�.�.�(
�C�
�C�
�
�
�
��#�c�#�d�3�i�#�#�#��\�#�J>�#�>�$�>�>�>�>�@	,�T�	,�d�	,�	,�	,�	,�"��"�"�"�"��S������r+rc�"�eZdZdZdedefd�ZdS)rza Matcher that does nothingr&rc��dS)NTrG)r5r&s  r%�matchzNullMatcher.match�s���tr+N)rBrCrDr3�AnySourceEntryr�r�rGr+r%rr�s<������%�%��~��$������r+rc��eZdZdZ		d%dd�dededefd	�Zd&d�Zd
ee	fd
�Z
dee	gefded
ee	fd�Z
dddgfdedededeedededeedeed
e	fd�Zded
dfd�Zded
dfd�Zd'deed
efd �Zded
dfd!�Zd&d"�Zd#ee	d
eee	eeee	fffd$�ZdS)(rz6represents the full sources.list + sources.list.d fileT� /usr/share/python-apt/templates/F)�deb822�withMatcher�matcherPathr�c��g|_||rt|��|_nt��|_||_|���dSr1)r(r�matcherrr��refresh)r5r�r�r�s    r%r6zSourcesList.__init__�sM��+-��	��<��	)�-�k�:�:�D�L�L�&�=�=�D�L�����������r+rNc��g|_tj�d��}tj�|��r|�|��tj�d��}tj�|��r{t	j	|��D]f}|j
r|�d��s|�d��r3|�tj�||�����g|jD]#}|j
s|j�|���$dS)z update the list of known entriesr��Dir::Etc::sourceparts�.sourcesz.listN)r(rvr��	find_file�os�path�exists�loadr��listdirr��endswithrRr�r�r�)r5rW�partsdir�sources    r%r�zSourcesList.refresh�s!����	��~�'�'�(>�?�?��
�7�>�>�$���	��I�I�d�O�O�O��>�*�*�+B�C�C��
�7�>�>�(�#�#�	<��
�8�,�,�
<�
<���K�<�D�M�M�*�$=�$=�<�$�-�-��C�C�<��I�I�b�g�l�l�8�T�:�:�;�;�;���i�	+�	+�F��>�
+���"�"�6�*�*�*��	+�	+r+c#�&K�|jD]}|V��dS)zGsimple iterator to go over self.list, returns SourceEntry
        typesN)r()r5�entrys  r%�__iter__zSourcesList.__iter__�s.�����Y�	�	�E��K�K�K�K�	�	r+�
predicates�attrsc/�:��K���dd��}|jD]x�|r9�jr2|�d���j�d��kr�=t	��fd��D����rt	�fd�|D����r�V��ydS)Nrcr`c3�L�K�|]}t�|���|kV��dSr1)�getattr)�.0r.r�r�s  ��r%�	<genexpr>z%SourcesList.__find.<locals>.<genexpr>�s6�����G�G�#�7�6�3�'�'�5��:�5�G�G�G�G�G�Gr+c3�.�K�|]}|���V��dSr1rG)r��	predicater�s  �r%r�z%SourcesList.__find.<locals>.<genexpr>�sF�����P�P�&/�	�	�&�!�!�P�P�P�P�P�Pr+)r�r(rcr�all)r5r�r�rcr�s  ` @r%�__findzSourcesList.__find�s��������i�i��t�$�$���i�	�	�F��
�v�z�
�c�j�j��o�o���9J�9J�3�9O�9O�&O�&O���G�G�G�G�G��G�G�G�G�G�
�C�P�P�P�P�3=�P�P�P�M�M�
������
	�	r+rM���rFrcrd�
orig_compsrr�posrWr�c	���|���}|�d��}	|	r|dd����}t����|dd�}
|��fd�|	d|||���}|D]?}|
D]:}
|
|jvr/|
|
�|
��=t|
��dkr|ccS�;�@|��fd�d|||�	��}|D]�}|j|	krEt|j��t|
��krt|j|
z��|_|cS|jr2|	s0t|j��t|
��krd|_|cS��|�o|�
d
��rZtd|���}|g|_|g|_
|g|_|
|_�rt���|_||j_|	|_n�|	rdnd|�rd
d����znd||g}|�|
��|r|�d|z��d�d�|D����dz}t-|��}|�||_|j�|��|dkr|j�|��n|j�||��|S)z�
        Add a new source to the sources.list.
        The method will search for existing matching repos and will try to
        reuse them as far as possible
        r�rNc�4��t|j���kSr1�r)r��r&r�s �r%�<lambda>z!SourcesList.add.<locals>.<lambda>����c�!�/�*�*�m�;�r+F)rbr�rFrcrdrc�4��t|j���kSr1r�r�s �r%r�z!SourcesList.add.<locals>.<lambda>r�r+)r�rFrcrdr�)rWrMz	[arch=%s]r�rQc3�K�|]}|�|V��	dSr1rG)r��parts  r%r�z"SourcesList.add.<locals>.<genexpr><s'����;�;�T�d�;�D�;�;�;�;�;�;r+r�)r��
startswithr�r)�_SourcesList__findrer"r�rbr*r�rr�r�r�r(r�r;rprR�extendr�rrWr�r��insert)r5rFrcrdr�rrr�rWr�rbre�sourcesr��new_comp�	new_entry�partsr�s        `        r%�addzSourcesList.add�s>���"�z�z�|�|���?�?�3�'�'���	%�����8�?�?�$�$�D��M�*�*�
��1�1�1�
���+�+�;�;�;�;������
�
�
���	&�	&�F�!�
&�
&���v�|�+�+��e�k�k�(�3�3�4��5�z�z�Q���%�
�
�
�
�
��

&��+�+�;�;�;�;������
�
���	"�	"�F���(�*�*��v�|�$�$��E�
�
�2�2�#'���u�(<�#=�#=�F�L��
�
�
���
"��
"��v�|�$�$��E�
�
�2�2�&+�F�O�!�M�M�M�����
�
�j� 9� 9��)�$�T�:�:�:�I�#�f�I�O�!�U�I�N� $�v�I��#�I�O��
>�*.�}�*=�*=�	�'�'.�I��$�!)�I��� �'���R��;H�P��s�x�x�
�6�6�6�6�b����E�
�L�L������
,����S�7�]�+�+�+��8�8�;�;�U�;�;�;�;�;�d�B�D�#�D�)�)�I���!%�	������9�%�%�%���7�7��I���Y�'�'�'�'��I���S�)�,�,�,��r+�source_entryc�:�|j�|��dS)z0remove the specified entry from the sources.listN)r(�remove)r5r�s  r%r�zSourcesList.removeIs���	����&�&�&�&�&r+�
backup_extc���tj�d��}tj�||z��r7tj�|��rt
j||z|��tj�d��}tj	d|z��D]<}tj�||z��rt
j||z|���=dS)z8restore sources.list files based on the backup extensionr�r�z%s/*N)
rvr�r�r�r�r��shutil�copyr��glob)r5r�rWr�s    r%�restore_backupzSourcesList.restore_backupMs����~�'�'�(>�?�?��
�7�>�>�$��+�,�,�	1������1E�1E�	1��K��z�)�4�0�0�0��>�*�*�+B�C�C���I�f�x�/�0�0�	5�	5�D��w�~�~�d�Z�/�0�0�
5���D�:�-�t�4�4�4��	5�	5r+c��t��}|�tjd��}|jD]R}|j|vrGt
j�|j��r#tj	|j|j�|�����S|S)z�make a backup of the current source files, if no backup extension
        is given, the current date/time is used (and returned)Nz%y%m%d.%H%M)
r)�time�strftimer(rWr�r�r�rr)r5r��already_backupedr�s    r%�backupzSourcesList.backupXs��+.�%�%������}�5�5�J��i�	M�	M�F��{�"2�2�2�r�w�~�~�f�k�7R�7R�2���F�K�6�;�;�
�
�)K�L�L�L���r+c���	t|d��5}|�d��r@tj|��D]*}|j�t
||�����+n/|D],}t||��}|j�|���-ddd��dS#1swxYwYdS#t$r&}tj
d|�d|�d���Yd}~dSd}~wwxYw)z(re)load the current sources�rr�Nzcould not open file 'z': r�)�openr�r�Filer(r�rrr��logging�warning)r5rW�fr;r�r��excs       r%r�zSourcesList.loadcs]��
	L��d�C���
1�A��=�=��,�,�1�#*�<��?�?�K�K���	�(�(�):�7�D�)I�)I�J�J�J�J�K�!"�1�1��!,�T�4�!8�!8���	�(�(��0�0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1�
1�
1���	L�	L�	L��O�O����c�c�c�J�K�K�K�K�K�K�K�K�K�����	L���s;�B1�BB$�B1�$B(�(B1�+B(�,B1�1
C!�;C�C!c���i}t|j��dkr`tj�d��}d}t|d��5}|�|��ddd��n#1swxYwYdS	|jD]�}|j|vrt|jd��||j<n:|j�d��r ||j�d��||j�|�	������	|�
��D]}|����dS#|�
��D]}|����wxYw)zsave the current sourcesrr�z�## See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
�wNr�r�)r�r(rvr�r�r�writerWr�rErO�close)r5�filesr�rprr�s      r%�savezSourcesList.saveqs���-/���t�y�>�>�Q����>�+�+�,B�C�C�D�E�
��d�C���
 �A��������
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ��F�		��)�
7�
7���;�e�+�+�)-�f�k�3�)?�)?�E�&�+�&�&��[�)�)�*�5�5�3��&�+�&�,�,�T�2�2�2��f�k�"�(�(������6�6�6�6�
7��\�\�^�^�
�
�����	�	�	�	�
�
��U�\�\�^�^�
�
�����	�	�	�	�
���s�A.�.A2�5A2�<BE�-E4�sources_listc��g}i}|D]v}|j��
|jjr.|j}||vrg||<||}|�|���Dt|jj��dkr|�|���w||fS)z5get all parent and child channels in the sources listNr)r\�childr�r�r�)r5r�parents�used_child_templatesr�r.�temps       r%�check_for_relationszSourcesList.check_for_relations�s�����EG��"�	+�	+�F���&����$�	
+��o���2�2�2�02�(��-�+�C�0�����F�#�#�#�#��v��/�0�0�1�4�4��N�N�6�*�*�*���-�.�.r+)Tr�)rNr1)rBrCrDr3r�rEr6r�r	r�r�rrr�r
�intrrr�rr�rrr�rrrrrrGr+r%rr�sd������@�@�!�=��
��������
����� +�+�+�+�(�(�>�2�����
�#�^�$4�d�$:�;�
�FI�
�	�.�	!�
�
�
�
�$��"�')�a�a��a��a��	a�
��I�a��
a��a��s�m�a� ��}�a�
�a�a�a�a�F'�;�'�4�'�'�'�'�	5��	5��	5�	5�	5�	5�	�	��#��	�#�	�	�	�	�L��L��L�L�L�L�����6/�$�^�4�/�	�t�N�#�T�(�D��4H�*H�%I�I�	J�/�/�/�/�/�/r+rc�.�eZdZdZdefd�Zdedefd�ZdS)rztmatcher class to make a source entry look nice
    lots of predefined matchers to make it i18n/gettext friendly
    r�c�@�g|_tjd|z��}|D]|}tj�|��}|�d��}|d|�}t
||���}|jD]#}|j�|j�|���$�}dS)Nz	%s/*.infoz.infor)�base_dir)	�	templatesrr�r��basenamer�r�	match_urir�)r5r��
spec_filesrr�rdr\s       r%r6zSourceEntryMatcher.__init__�s���)+����Y�{�[�8�9�9�
��	4�	4�A��� � ��#�#�A����w���A��!�A�#��A��A��4�4�4�D� �N�
4�
4���%�1��N�)�)�(�3�3�3��
4�	�r+r�rc���d}|jD]�}|j�|j��|j�y|j�r|j�k|j�dtj|j|j��rEtj|j|j��r&|j|jks|jdkrd}||_	nS|�
|j��r8|j�1|j�*tj|j|j��rd}||_	n��|S)z%Add a matching template to the sourceFNr�T)r"rcrdr$�
match_name�re�searchr�rFr\r)r5r��foundr\s    r%r�zSourceEntryMatcher.match�s������	�	�H��z�!�V�[�%8���"�.��'�3��J�*��K�+��I�h�0�&�*�=�=�,��H�X�0�&�+�>�>�,����
�-�-���%�1G�1G���"*������"�"�6�:�.�.�
��'�3��K�+��H�X�0�&�+�>�>�,���"*�������r+N)	rBrCrDr3rEr6r�r�r�rGr+r%rr�s[���������C������N��t������r+r�__main__zentry %sz!http://archive.ubuntu.com/ubuntu/z$http://de.archive.ubuntu.com/ubuntu/zis_mirror(): %sz http://archive.ubuntu.com/ubuntuz#http://de.archive.ubuntu.com/ubuntu)3�
__future__rrr�ior
�os.pathr�r(rr�typingrrrrr	r
rrr
rrv�distinforrrMrr�__all__rEr�rr*r�r-rIrUrrr��objectrrrrB�init_configr�r��info�mirrorrGr+r%�<module>r6s���47�6�6�6�6�6�6�6�����	�	�	�	���������	�	�	�	�
�
�
�
���������������������������������(�(�(�(�(�(�(�(��������G�C�L�L�������#��C��D�����:�H�Q�K��D��G�����*�*�*�*�*�(�*�*�*�"1�1�1�1�1��1�1�1��Q��1�����_$�_$�_$�_$�_$�_$�_$�_$�Do�o�o�o�o�o�o�o�d�{�$5�5�6�������&����x/�x/�x/�x/�x/�&�x/�x/�x/�v1�1�1�1�1��1�1�1�j�z����G������k�m�m�G��/�/�����Z�%�)�)�+�+�-�.�.�.�.��Y�+�-S���F��G�L�"�V�+�,�,�,��G�L��	�.�0V�	
�	
����
�G�L��	�/�1V�	
�	
������%�r+