§
    ÷yIfãH  ã                  ót   — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
  G d„ dej        ¦  «        ZdS )	é    )ÚannotationsN)Únodes)Úcheckers)Úutils)ÚHIGHÚ	INFERENCEc                  óT  — e Zd ZdZdddddddœZd)d„Zed*d„¦   «         Z ej	        dd¦  «        d+d„¦   «         Z
d+d„Zd+d„Z ej	        ddd¦  «        d,d„¦   «         Zd,d„Zd,d„Z ej	        dd¦  «        d-d „¦   «         Zd-d!„Zd.d#„Z ej	        d$¦  «        d/d&„¦   «         Zd/d'„Zd(S )0ÚRecommendationCheckerÚrefactoring)z@Consider using enumerate instead of iterating with range and lenúconsider-using-enumeratez~Emitted when code that iterates with range and len is encountered. Such code can be simplified by using the enumerate builtin.)zEConsider iterating the dictionary directly instead of calling .keys()úconsider-iterating-dictionarya  Emitted when the keys of a dictionary are iterated through the ``.keys()`` method or when ``.keys()`` is used for a membership check. It is enough to iterate through the dictionary itself, ``for key in dictionary``. For membership checks, ``if key in dictionary`` is faster.)z Consider iterating with .items()úconsider-using-dict-itemszÆEmitted when iterating over the keys of a dictionary and accessing the value by index lookup. Both the key and value can be accessed by iterating using the .items() method of the dictionary instead.)zUse %s insteadúuse-maxsplit-argzÃEmitted when accessing only the first or last element of str.split(). The first and last element can be accessed by using str.split(sep, maxsplit=1)[0] or str.rsplit(sep, maxsplit=1)[-1] instead.)z.Use a sequence type when iterating over valuesúuse-sequence-for-iterationzvWhen iterating over values, sequence types (e.g., ``lists``, ``tuples``, ``ranges``) are more efficient than ``sets``.)z6Formatting a regular string which could be an f-stringúconsider-using-f-stringzÁUsed when we detect a string that is being formatted with format() or % which could potentially be an f-string. The use of f-strings is preferred. Requires Python 3.6 and ``py-version >= 3.6``.)ÚC0200ÚC0201ÚC0206ÚC0207ÚC0208ÚC0209ÚreturnÚNonec                ó>   — | j         j        j        }|dk    | _        d S )N)é   é   )ÚlinterÚconfigÚ
py_versionÚ
_py36_plus)Úselfr   s     úf/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/refactoring/recommendation_checker.pyÚopenzRecommendationChecker.openA   s   € Ø”[Ô'Ô2ˆ
Ø$¨Ò.ˆŒˆˆó    Únodeúnodes.NodeNGÚfunctionÚstrÚboolc                óp   — t          j        | ¦  «        }|sdS t          j        |¦  «        o
|j        |k    S )NF)r   Ú
safe_inferÚis_builtin_objectÚname)r%   r'   Úinferreds      r"   Ú_is_builtinz!RecommendationChecker._is_builtinE   s<   € åÔ# DÑ)Ô)ˆØð 	Ø�5ÝÔ& xÑ0Ô0ÐN°X´]ÀhÒ5NÐNr$   r   r   ú
nodes.Callc                óZ   — |                       |¦  «         |                      |¦  «         d S ©N)Ú$_check_consider_iterating_dictionaryÚ_check_use_maxsplit_arg©r!   r%   s     r"   Ú
visit_callz RecommendationChecker.visit_callL   s2   € ð 	×1Ò1°$Ñ7Ô7Ð7Ø×$Ò$ TÑ*Ô*Ð*Ð*Ð*r$   c                óŽ  ‡— t          ‰j        t          j        ¦  «        sd S ‰j        j        dk    rd S t          ‰j        t          j        ¦  «        r‰j        j        dv rd S t          j	        ‰t          j
        ¦  «        }t          ‰j        t          j        t          j        f¦  «        s"|r“t          ˆfd„|j        D ¦   «         ¦  «        rut          j        ‰j        ¦  «        }t          |t           j        ¦  «        rt          |j        t          j        ¦  «        sd S |                      d‰t*          ¬¦  «         d S d S d S )NÚkeys>   ú&ú^ú|c              3  ó^   •K  — | ]'\  }}|d v r|‰                      ¦   «         v s|‰u ¯#|V — Œ(dS )>   únot inÚinN)Únode_ancestors)Ú.0ÚopÚ
comparatorr%   s      €r"   ú	<genexpr>zMRecommendationChecker._check_consider_iterating_dictionary.<locals>.<genexpr>`   sc   øè è € ð ð á"�B˜
ØÐ)Ð)Ð)Ø 4×#6Ò#6Ñ#8Ô#8Ð8Ð8¸JÈ$Ð<NÐ<Nð ð =OÐ<NÐ<NÐ<Nð	ð r$   r   ©r%   Ú
confidence)Ú
isinstanceÚfuncr   Ú	AttributeÚattrnameÚparentÚBinOprA   r   Úget_node_first_ancestor_of_typeÚCompareÚForÚComprehensionÚanyÚopsr+   ÚastroidÚBoundMethodÚboundÚDictÚadd_messager   )r!   r%   Úcomp_ancestorr.   s    `  r"   r3   z:RecommendationChecker._check_consider_iterating_dictionaryS   sa  ø€ Ý˜$œ)¥U¤_Ñ5Ô5ð 	ØˆFØŒ9Ô Ò'Ð'ØˆFå�d”k¥5¤;Ñ/Ô/ð 	°D´K´NÀoÐ4UÐ4UØˆFåÔ=¸dÅEÄMÑRÔRˆå�t”{¥U¤YµÔ0CÐ$DÑEÔEð	àð	õ ð ð ð ð à&3Ô&7ðñ ô ñ ô ð	õ Ô'¨¬	Ñ2Ô2ˆHÝ˜h­Ô(;Ñ<Ô<ð ÅJØ”¥¤
ñEô Eð ð �Ø×ÒØ/°dÅyð ñ ô ð ð ð ð	ð 	ð 	ð 	r$   c                ó   — t          |j        t          j        ¦  «        r?|j        j        dv r1t          t          j        |j        ¦  «        t          j        ¦  «        sdS t          j        |j        j	        ¦  «        }t          |t          j
        ¦  «        r.t          |                     t          j        ¦  «        ¦  «        rdS t          }	 t          j        |dd¦  «        }n7# t
          j        $ r% t          j        |d¬¦  «        }t$          }|sY dS Y nw xY w	 t          j        |dd¦  «         dS # t
          j        $ r t          j        |d¬¦  «        rY dS Y nw xY wt          |j        t          j        ¦  «        �rÈ	 t          j        |j        ¦  «        j        }n# t
          j        $ r Y dS w xY wt          |j        j        t          j        ¦  «        rå|                     ¦   «         }|                     t          j        t          j        f¦  «        D ]¥}|                     |¦  «        sŒ|                     t          j        ¦  «        D ]%}|j        j        j        |j         j        k    r  dS Œ&|                     t          j!        ¦  «        D ](}|j        j        j        d„ |j"        D ¦   «         v r  dS Œ)Œ¦|d	v r‡|j        j        }	|d
k    rdnd}
|j         #                    ¦   «          $                    |	d¬¦  «        d         |
z   d| #                    ¦   «         › d|› d�z   }|  %                    d||f|¬¦  «         dS dS dS )zdAdd message when accessing first or last elements of a str.split() or
        str.rsplit().
        >   ÚsplitÚrsplitNr   Úsep)Úkeywordé   Úmaxsplitc                ó   — g | ]	}|j         ‘Œ
S © )r-   )r@   Úns     r"   ú
<listcomp>zARecommendationChecker._check_use_maxsplit_arg.<locals>.<listcomp>¦   s'   € ð 6ð 6ð 6Ø'(˜AœFð6ð 6ð 6r$   )éÿÿÿÿr   rc   rZ   rY   )r^   ú(z, maxsplit=1)[ú]r   )r%   ÚargsrE   )&rF   rG   r   rH   rI   r   r+   rR   rS   ÚexprÚInstancerP   Únodes_of_classÚClassDefr   Úget_argument_from_callÚNoSuchArgumentErrorÚinfer_kwarg_from_callr   rJ   Ú	SubscriptÚget_subscript_const_valueÚvalueÚInferredTypeErrorÚsliceÚNameÚscoperN   ÚWhileÚ	parent_ofÚ	AugAssignr-   ÚtargetÚAssignÚtargetsÚ	as_stringrZ   rV   )r!   r%   Úinferred_exprrE   r[   Úsubscript_valuert   Ú	loop_nodeÚassignment_nodeÚfn_nameÚnew_fnÚnew_names               r"   r4   z-RecommendationChecker._check_use_maxsplit_argp   s¾  € õ �t”y¥%¤/Ñ2Ô2ð	à”	Ô"Ð&9Ð9Ð9Ý�5Ô+¨D¬IÑ6Ô6½Ô8KÑLÔLð :ð ˆFÝÔ(¨¬¬Ñ8Ô8ˆÝ�m¥WÔ%5Ñ6Ô6ð 	½3Ø×(Ò(­¬Ñ8Ô8ñ<
ô <
ð 	ð ˆFåˆ
ð	ÝÔ.¨t°Q¸Ñ>Ô>ˆCˆCøÝÔ(ð 	ð 	ð 	ÝÔ-¨d¸EÐBÑBÔBˆCÝ"ˆJØð Ø��ðð ð	øøøð	åÔ(¨¨q°*Ñ=Ô=Ð=ØˆFøÝÔ(ð 	ð 	ð 	ÝÔ*¨4¸ÐDÑDÔDð Ø��ðð ð	øøøõ �d”k¥5¤?Ñ3Ô3ñ %	ðÝ"'Ô"AÀ$Ä+Ñ"NÔ"NÔ"T��øÝÔ*ð ð ð Ø��ðøøøõ ˜$œ+Ô+­U¬ZÑ8Ô8ð #àŸ
š
™œ�Ø!&×!5Ò!5µu´yÅ%Ä+Ð6NÑ!OÔ!Oð #ð #�IØ$×.Ò.¨tÑ4Ô4ð !Ø ð ,5×+CÒ+CÅEÄOÑ+TÔ+Tð #ð #˜Øœ;Ô,Ô1°_Ô5KÔ5PÒPÐPØ"˜F˜F˜Fð Qà+4×+CÒ+CÅEÄLÑ+QÔ+Qð #ð #˜Øœ;Ô,Ô1ð 6ð 6Ø,;Ô,Cð6ñ 6ô 6ð ð ð #˜F˜F˜Fðð#ð  'Ð)Ð)Øœ)Ô,�Ø%4¸Ò%:Ð%:˜˜À�à”I×'Ò'Ñ)Ô)×0Ò0°À1Ð0ÑEÔEÀaÔHØñàK˜#Ÿ-š-™/œ/ÐKÐK¸ÐKÐKÐKñLð ð
 × Ò Ø&ØØ"˜Ø)ð	 !ñ ô ð ð ð ðA%	ð %	ð0 *Ð)s6   ÃC& Ã&.DÄDÄD6 Ä6%E!Å E!ÆF$ Æ$F7Æ6F7r   r   r   ú	nodes.Forc                ó„   — |                       |¦  «         |                      |¦  «         |                      |¦  «         d S r2   )Ú_check_consider_using_enumerateÚ _check_consider_using_dict_itemsÚ!_check_use_sequence_for_iterationr5   s     r"   Ú	visit_forzRecommendationChecker.visit_forº   sF   € ð 	×,Ò,¨TÑ2Ô2Ð2Ø×-Ò-¨dÑ3Ô3Ð3Ø×.Ò.¨tÑ4Ô4Ð4Ð4Ð4r$   c                ó`  — t          |j        t          j        ¦  «        sdS |                      |j        j        d¦  «        sdS |j        j        sdS t          |j        j        d         t          j        ¦  «        o|j        j        d         j        dk    }t          |j        j        ¦  «        dk    r|sdS t          |j        j        ¦  «        dk    rdS t          |j        j        d         t          j        ¦  «        sdS |j        j        d         j        }|                      |d¦  «        sdS |j        j        d         j        }|rt          |¦  «        dk    rdS |d         }t          |t          j
        ¦  «        rt          j
        }n)t          |t          j        ¦  «        rt          j        }ndS |                     ¦   «         }t          |t          j
        ¦  «        r|j        dk    r|j        d	k    rdS |j        D �]'}|                     t          j        ¦  «        D �]}	t          |	j        |¦  «        sŒ|	j        }
t          |
t          j
        ¦  «        sŒ;|	j                             ¦   «         |                     ¦   «         k    rŒk|
j        |j        j        k    rƒt          |	j        t          j
        ¦  «        r|j        |	j        j        k    s4t          |	j        t          j        ¦  «        r0|j        |	j        j        k    r|                      d
|¬¦  «           dS �Œ�Œ)dS )z?Emit a convention whenever range and len are used for indexing.NÚranger   é   rc   Úlenr]   r!   Ú__iter__r   ©r%   )rF   Úiterr   ÚCallr/   rG   rf   ÚConstrp   rŒ   rs   rH   rt   r-   Úbodyri   rn   rr   rx   rI   rV   )r!   r%   Úis_constant_zeroÚsecond_funcÚlen_argsÚiterating_objectÚexpected_subscript_val_typert   ÚchildÚ	subscriptrp   s              r"   r…   z5RecommendationChecker._check_consider_using_enumerateÄ   sü  € õ ˜$œ)¥U¤ZÑ0Ô0ð 	ØˆFØ×Ò ¤	¤°Ñ8Ô8ð 	ØˆFØŒyŒ~ð 	ØˆFå�t”y”~ aÔ(­%¬+Ñ6Ô6ÐW¸4¼9¼>È!Ô;LÔ;RÐVWÒ;Wð 	õ ˆtŒyŒ~ÑÔ !Ò#Ð#Ð,<Ð#ØˆFÝˆtŒyŒ~ÑÔ Ò"Ð"ØˆFõ ˜$œ)œ.¨Ô,­e¬jÑ9Ô9ð 	ØˆFØ”i”n RÔ(Ô-ˆØ×Ò ¨UÑ3Ô3ð 	ØˆFØ”9”> "Ô%Ô*ˆØð 	�3˜x™=œ=¨AÒ-Ð-ØˆFØ# Aœ;ÐÝÐ&­¬
Ñ3Ô3ð 	Ý*/¬*Ð'Ð'ÝÐ(­%¬/Ñ:Ô:ð 	Ý*/¬/Ð'Ð'àˆFà—
’
‘”ˆåÐ'­¬Ñ4Ô4ð	à Ô%¨Ò/Ð/Ø”
˜jÒ(Ð(àˆFð ”Yð 	ñ 	ˆEØ"×1Ò1µ%´/ÑBÔBð ñ �	Ý! )¤/Ð3NÑOÔOð Øà!œ�Ý! %­¬Ñ4Ô4ð ØØ”?×(Ò(Ñ*Ô*¨d¯jªj©l¬lÒ:Ð:ð
 Ø”: ¤Ô!1Ò1Ð1Ý˜yœµ´
Ñ;Ô;ð 2à(Ô-°´Ô1EÒEÐEÝ! )¤/µ5´?ÑCÔCð Fà(Ô1°Y´_Ô5MÒMÐMà×$Ò$Ð%?ÀdÐ$ÑKÔKÐKØ�F�F�Fùñ)ð	ð 	r$   c                óö  — t          j        |¦  «        }|€dS |j        D �]W}|                     t          j        ¦  «        D �]3}t          |j        t          j        t          j	        f¦  «        sŒ/|j
        }t          |t          j        ¦  «        r2|j        |j        j        k    s||j                             ¦   «         k    rŒƒ|                     |j        ¦  «        d         d         j        }||j        k    rŒºt          |j        t          j        ¦  «        r||j        j        v s/t          |j        t          j        ¦  «        r||j        j        k    r  dS |                      d|¬¦  «           dS �ŒYdS )ú7Add message when accessing dict values by index lookup.Nr]   rc   r   rŽ   )r   Úget_iterating_dictionary_namer’   ri   r   rn   rF   rp   rs   rH   rr   r-   rx   r{   ÚlookupÚlinenorJ   ry   rz   rw   rV   )r!   r%   Úiterating_object_namer˜   r™   rp   Úlast_definition_linenos          r"   r†   z6RecommendationChecker._check_consider_using_dict_items  s{  € õ !&Ô CÀDÑ IÔ IÐØ Ð(ØˆFð ”Yð 	ñ 	ˆEØ"×1Ò1µ%´/ÑBÔBð ñ �	Ý! )¤/µE´JÅÄÐ3PÑQÔQð Øà!œ�å" 5­%¬*Ñ5Ô5ðà”z T¤[Ô%5Ò5Ð5Ø,°	´×0IÒ0IÑ0KÔ0KÒKÐKàØ).¯ª°e´jÑ)AÔ)AÀ!Ô)DÀRÔ)HÔ)OÐ&Ø)¨D¬KÒ7Ð7ð
 å˜yÔ/µ´Ñ>Ô>ðà! YÔ%5Ô%=Ð=Ð=Ý! )Ô"2µE´OÑDÔDð >à! YÔ%5Ô%<Ò<Ð<ð �F�F�Fà× Ò Ð!<À4Ð ÑHÔHÐHØ���ñ;ð	ð 	r$   únodes.Comprehensionc                óZ   — |                       |¦  «         |                      |¦  «         d S r2   )Ú._check_consider_using_dict_items_comprehensionr‡   r5   s     r"   Úvisit_comprehensionz)RecommendationChecker.visit_comprehension;  s2   € ð
 	×;Ò;¸DÑAÔAÐAØ×.Ò.¨tÑ4Ô4Ð4Ð4Ð4r$   c                óæ  — t          j        |¦  «        }|€dS |j                             ¦   «         D ]¾}|                     t
          j        ¦  «        D ]œ}t          |j        t
          j	        t
          j
        f¦  «        sŒ.|j        }t          |t
          j	        ¦  «        r2|j        |j        j        k    s||j                             ¦   «         k    rŒ‚|                      d|¬¦  «           dS Œ¿dS )r›   Nr   rŽ   )r   rœ   rJ   Úget_childrenri   r   rn   rF   rp   rs   rH   rr   r-   rx   r{   rV   )r!   r%   rŸ   r˜   r™   rp   s         r"   r£   zDRecommendationChecker._check_consider_using_dict_items_comprehensionC  s÷   € õ !&Ô CÀDÑ IÔ IÐØ Ð(ØˆFà”[×-Ò-Ñ/Ô/ð 	ð 	ˆEØ"×1Ò1µ%´/ÑBÔBð ð �	Ý! )¤/µE´JÅÄÐ3PÑQÔQð Øà!œ�å" 5­%¬*Ñ5Ô5ðà”z T¤[Ô%5Ò5Ð5Ø,°	´×0IÒ0IÑ0KÔ0KÒKÐKàà× Ò Ð!<À4Ð ÑHÔHÐHØ���ðð	ð 	r$   únodes.For | nodes.Comprehensionc                óÒ   — t          |j        t          j        ¦  «        rEt	          t          j        |¦  «        ¦  «        s&|                      d|j        t          ¬¦  «         dS dS dS )zrCheck if code iterates over an in-place defined set.

        Sets using `*` are not considered in-place.
        r   rD   N)	rF   r�   r   ÚSetrP   r   Úhas_starred_node_recursiverV   r   r5   s     r"   r‡   z7RecommendationChecker._check_use_sequence_for_iteration[  s   € õ �d”i¥¤Ñ+Ô+ð 	µCÝÔ,¨TÑ2Ô2ñ5
ô 5
ð 	ð ×ÒØ,°4´9Íð ñ ô ð ð ð ð	ð 	ð 	ð 	r$   r   únodes.Constc                ó¸   — | j         rN|                     ¦   «         dk    r8t          |j        t          j        ¦  «        s|                      |¦  «         d S d S d S d S )Nzbuiltins.str)r    ÚpytyperF   rJ   r   Ú	JoinedStrÚ_detect_replacable_format_callr5   s     r"   Úvisit_constz!RecommendationChecker.visit_consti  si   € àŒ?ð 	:à�{Š{‰}Œ} Ò.Ð.µzØ”�Uœ_ñ8ô 8Ð.ð ×3Ò3°DÑ9Ô9Ð9Ð9Ð9ð	:ð 	:à.Ð.Ð.Ð.r$   c                ó¾  — t          |j        t          j        ¦  «        �rÓ|j        j        dk    �rÂt          |j        j        t          j        ¦  «        sdS |j        j        j        r–|j        j        j        D ]ƒ}t          |t          j        ¦  «        rNt          j	        |j
        ¦  «        }t          |t          j        ¦  «        rt          |j        ¦  «        dk    r dS d|                     ¦   «         v r dS Œ„nÐ|j        j        j        r¿d„ t          j        |j
        ¦  «        d         D ¦   «         }|j        j        j        D ]„}|                     |j        ¦  «        dk    r dS t          j	        |j
        ¦  «        }t          |t          j        ¦  «        r.t          |j        ¦  «        dk    rt          |¦  «        dk    r dS Œ…|                      d||j        |j        ¬¦  «         dS t          |j        t          j        ¦  «        �rG|j        j        d	k    �r8d|j        j                             ¦   «         v rdS t9          |j        j        d
¦  «        r$t          |j        j        j
        t<          ¦  «        sdS d|j        j        j
        v sd|j        j        j
        v rdS t          j	        |j        j        ¦  «        }t          |t          j        ¦  «        rt          |j        ¦  «        dk    rdS n4t          |t          j        ¦  «        rt          |j        ¦  «        dk    rdS |                      d||j        |j        ¬¦  «         dS dS dS )z{Check whether a string is used in a call to format() or '%' and whether it
        can be replaced by an f-string.
        ÚformatNr]   ú\c                ó   — g | ]
}|d          ‘ŒS )r   r`   )r@   Úis     r"   rb   zHRecommendationChecker._detect_replacable_format_call.<locals>.<listcomp>�  s)   € ð  ð  ð  Ø�A�a”Dð ð  ð  r$   r   r   )r%   ÚlineÚ
col_offsetú%rp   Ú{Ú})rF   rJ   r   rH   rI   r�   rf   ÚStarredr   r+   rp   rR   ÚListrŒ   Úeltsr{   ÚkeywordsÚparse_format_method_stringÚcountÚargrU   ÚitemsrV   rž   r·   rK   rA   ÚrightÚhasattrÚleftr(   )r!   r%   rÁ   r.   Úkeyword_argsr\   Úinferred_rights          r"   r¯   z4RecommendationChecker._detect_replacable_format_callr  sm  € õ
 �t”{¥E¤OÑ4Ô4ñM	à”Ô$¨Ò0Ñ0õ ˜dœkÔ0µ%´*Ñ=Ô=ð Ø�àŒ{Ô!Ô&ð #Øœ;Ô-Ô2ð ð �Cå! #¥u¤}Ñ5Ô5ð #Ý#(Ô#3°C´IÑ#>Ô#>˜å& xµ´Ñ>Ô>ð#å # H¤MÑ 2Ô 2°QÒ 6Ð 6à"˜F˜Fà˜sŸ}š}™œÐ.Ð.Ø˜˜ð /ðð ”Ô#Ô,ð #ð ð  Ý"'Ô"BÀ4Ä:Ñ"NÔ"NÈqÔ"Qð ñ  ô  �ð  $œ{Ô1Ô:ð 
#ð 
#�Gà#×)Ò)¨'¬+Ñ6Ô6¸Ò:Ð:Ø˜˜å#Ô.¨w¬}Ñ=Ô=�Gõ " '­5¬:Ñ6Ô6ð #Ý˜wœ}Ñ-Ô-°Ò1Ð1µc¸,Ñ6GÔ6GÈ!Ò6KÐ6KØ"˜F˜Føð ×ÒØ)ØØ”[Øœ?ð	 ñ ô ð ð ð õ ˜œ¥U¤[Ñ1Ô1ñ 	°d´k´nÈÒ6KÑ6Kà�t”{Ô(×2Ò2Ñ4Ô4Ð4Ð4Ø�õ ˜4œ;Ô+¨WÑ5Ô5ð ½ZØ”Ô Ô&­ñ>ô >ð ð �ð �d”kÔ&Ô,Ð,Ð,°°t´{Ô7GÔ7MÐ0MÐ0MØ�å"Ô-¨d¬kÔ.?Ñ@Ô@ˆNõ ˜.­%¬*Ñ5Ô5ð Ý�~Ô+Ñ,Ô,¨qÒ0Ð0Ø�Fð 1å˜N­E¬JÑ7Ô7ð Ý�~Ô*Ñ+Ô+¨aÒ/Ð/Ø�Fð ×ÒØ)ØØ”[Øœ?ð	 ñ ô ð ð ð ð5	ð 	Ð6KÐ6Kr$   N)r   r   )r%   r&   r'   r(   r   r)   )r%   r0   r   r   )r%   rƒ   r   r   )r%   r¡   r   r   )r%   r§   r   r   )r%   r«   r   r   )Ú__name__Ú
__module__Ú__qualname__r-   Úmsgsr#   Ústaticmethodr/   r   Úonly_required_for_messagesr6   r3   r4   rˆ   r…   r†   r¤   r£   r‡   r°   r¯   r`   r$   r"   r
   r
      sõ  € € € € € Ø€Dð
ð
ð
ð
ð
ð
ðO.ð .€Dð`/ð /ð /ð /ð ðOð Oð Oñ „\ðOð &€UÔ%Ø'Ð);ñô ð+ð +ð +ñô ð+ðð ð ð ð:Hð Hð Hð HðT &€UÔ%Ø"Ø#Ø$ñô ð
5ð 5ð 5ñô ð
5ð
Gð Gð Gð GðR,ð ,ð ,ð ,ð\ &€UÔ%Ø#Ø$ñô ð5ð 5ð 5ñ	ô ð5ðð ð ð ð0ð ð ð ð &€UÔ%Ð&?Ñ@Ô@ð:ð :ð :ñ AÔ@ð:ðQð Qð Qð Qð Qð Qr$   r
   )Ú
__future__r   rR   r   Úpylintr   Úpylint.checkersr   Úpylint.interfacesr   r   ÚBaseCheckerr
   r`   r$   r"   ú<module>rÓ      s±   ðð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ðtð tð tð tð t˜HÔ0ñ tô tð tð tð tr$   