Ë
    pPêjáh  ã            
      ó  — U 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Zd dl	m
Z
 ej                  dk\  rd dlZnd dlZd dlmZmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lm Z  e!e"z  e#z  e$z  e%e!e!f   z  e&e!   z  e'e#e#f   z  Z(de)d<   eege(f   Z*de)d<    G d„ dejV                  «      Z,dSd„Z-dTd„Z.dUdVd„Z/dWd„Z0dXd„Z1dYd„Z2dZd„Z3d[d„Z4d\d„Z5d\d„Z6d]d„Z7i de-“de!“de1“dd„ “d e4“d!e1“d"e1“d#e6“d$e5“d%e"“d&d'„ “d(d)„ “d*d+„ “d,d-„ “d.d/„ “d0d1„ “d2d3„ “d4„ e1e1e"d5„ e/e/e.d6œ¥Z8d7e)d8<   e8js                  «       Z:d7e)d9<   e:jw                  i de-“dd:„ “d d;„ “d#d<„ “d$d=„ “d&e/“d(e/“d*e/“d,d>„ “d.e/“d0d?„ “d2d@„ “dAe/“dBe2“dCe/“dDe/“«       	 d^	 	 	 	 	 d_dE„Z<	 d^	 	 	 d`dF„Z=	 	 da	 	 	 	 	 	 	 	 	 	 	 dbdG„Z>dcdH„Z?dddI„Z@dedJ„ZAej„                  f	 	 	 	 	 	 	 	 	 	 	 	 	 dfdK„ZCdgdL„ZDdhdM„ZEdidN„ZF	 	 	 	 	 	 djdO„ZGdkdP„ZH G dQ„ dReI«      ZJy)lé    )ÚannotationsN)ÚStringIO)é   é   )ÚCallableÚMappingÚMutableMappingÚSequence)ÚAnyÚFinalÚTextIOÚ	TypeAlias)ÚNever)Údefaults)ÚPER_MODULE_OPTIONSÚOptions)Úget_available_threadsr   Ú_CONFIG_VALUE_TYPESÚ_INI_PARSER_CALLABLEc                  ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )ÚVersionTypeErrorz>Provide a fallback value if the Python version is unsupported.c               ó,   •— || _         t        ‰| �  |Ž  y ©N)ÚfallbackÚsuperÚ__init__)Úselfr   ÚargsÚ	__class__s      €úW/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/config_parser.pyr   zVersionTypeError.__init__!   s   ø€ Ø ˆŒÜ‰Ñ˜$Òó    )r   r   r   útuple[int, int]ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__classcell__)r   s   @r    r   r      s   ø„ ÙH÷ ñ  r!   r   c                ó  — t        j                  dt        | «      «      }|st        j                  d| › d�«      ‚t        |j                  d«      «      t        |j                  d«      «      }}|dk(  r
|dk(  r	 ||fS |dk(  rk|t        j                  d   k  rQ dj                  |gt        j                  ¢­Ž }t        | t        «      r|d	z  }t        |t        j                  ¬
«      ‚||fS t        j                  d|› d�«      ‚)Nz\A(\d)\.(\d+)\ZzInvalid python version 'z' (expected format: 'x.y')é   é   é   r   z6Python 3.{} is not supported (must be {}.{} or higher)z7. You may need to put quotes around your Python version)r   zPython major version 'z' out of range (must be 3))ÚreÚmatchÚstrÚargparseÚArgumentTypeErrorÚintÚgroupr   ÚPYTHON3_VERSION_MINÚformatÚ
isinstanceÚfloatr   )ÚvÚmÚmajorÚminorÚmsgs        r    Úparse_versionr>   &   s  € Ü
�‰Ð#¤S¨£VÓ,€AÙÜ×(Ñ(Ð+CÀAÀ3ÐF`Ð)aÓbÐbÜ�q—w‘w˜q“z“?¤C¨¯©°«
£Oˆ5€EØ�‚z�e˜q’jØð �%ˆ<Ðð 
�!ŠØ”8×/Ñ/°Ñ2Ò2ØQÐJ×QÑQØðÜ ×4Ñ4òˆCô ˜!œUÔ#ØÐPÑP�ä" 3´×1MÑ1MÔNÐNð
 �%ˆ<Ðô ×(Ñ(Ø$ U GÐ+EÐFó
ð 	
r!   c                ó  — t        | t        «      r| j                  «       n| }|dk(  r"t        t        j
                  t        «       «      S 	 t        |«      S # t        t        f$ r}t        j                  d| › d�«      |‚d }~ww xY w)NÚautozInvalid number of workers 'z!' (expected an integer or 'auto'))r7   r0   ÚstripÚminr   ÚMAX_AUTO_WORKERSr   r3   Ú	TypeErrorÚ
ValueErrorr1   r2   )r9   ÚvalueÚerrs      r    Úparse_num_workersrH   >   s}   € Ü# A¤sÔ+ˆA�G‰GŒI°€EØ�‚Ü”8×,Ñ,Ô.CÓ.EÓFÐFðÜ�5‹zÐøÜ”zÐ"ò Ü×(Ñ(Ø)¨!¨Ð,MÐNó
àð	ûðús   Á
A ÁBÁ%A?Á?Bc                ó~  — ddd„}t        | t        «      rNt        j                  || «      D �cg c]  }|j	                  «       ‘Œ }}|r|d   dk(  r|j                  d«       |S t        | t        «      r8| D �cg c],  }t        |t        «      r|j	                  «       n	 ||d¬«      ‘Œ. c}S  || «       yc c}w c c}w )	zŽSplit and trim a str or sequence (eg: list) of str into a list of str.
    If an element of the input is not str, a type error will be raised.Ú c                ód   — t        j                  d| › dt        | «      j                  › d|› �«      ‚)Nz<Expected a list or a stringified version thereof, but got: 'z', of type ú.)r1   r2   Útyper%   )ÚxÚadditional_infos     r    Úcomplainztry_split.<locals>.complainO   s<   € Ü×(Ñ(ØJÈ1È#È[ÔY]Ð^_ÓY`×YiÑYiÐXjÐjkÐl{Ðk|Ð}ó
ð 	
r!   éÿÿÿÿz (As an element of the list.))rO   N)rJ   )rN   ÚobjectrO   r0   r#   r   )r7   r0   r.   ÚsplitrA   Úpopr
   )r9   Úsplit_regexrP   ÚpÚitemss        r    Ú	try_splitrX   K   s³   € ô
ô
 �!”SÔÜ$&§H¡H¨[¸!Ó$<Ö=˜q�—‘•Ð=ˆÐ=Ù�U˜2‘Y "’_Ø�I‰I�bŒMØˆÜ	�A”xÔ	 ð ö
ð ô ˜a¤Ô%ð —‘”	á˜aÐ1PÔQñRò
ð 	
ñ 	��ùò >ùò

s   ®B5Á81B:c                ó–   — | D ]C  }d|› �}d|v rt        j                  |› d�«      ‚d|v sd|v sŒ-t        j                  |› d�«      ‚ | S )NzInvalid allow list entry: Ú*z5 (entries are already prefixes so must not contain *)ú\ú/zA (entries must be packages like foo.bar not directories or files))r1   r2   )Ú
allow_listrV   r=   s      r    Úvalidate_package_allow_listr^   f   sw   € Øò 	ˆØ*¨1¨#Ð.ˆØ�!‰8Ü×,Ñ,Ø�%ÐLÐMóð ð �1‰9˜˜qšÜ×,Ñ,Ø�%ÐXÐYóð ð	ð Ðr!   c                óz   — t         j                  j                  t         j                  j                  | «      «      S )ziExpand the user home directory and any environment variables contained within
    the provided path.
    )ÚosÚpathÚ
expandvarsÚ
expanduser)ra   s    r    Úexpand_pathrd   t   s(   € ô
 �7‰7×ÑœbŸg™g×0Ñ0°Ó6Ó7Ð7r!   c                óÐ   — t        | t        «      r#| j                  «       r| j                  «       gS g S | D �cg c]#  }|j                  «       sŒ|j                  «       ‘Œ% c}S c c}w r   )r7   r0   rA   )r9   rV   s     r    Ústr_or_array_as_listrf   |   sI   € Ü�!”SÔØŸg™gœi�—‘“	ˆ{Ð/¨RÐ/Ø Ö.˜! A§G¡G¥IˆA�G‰G�IÒ.Ð.ùÒ.s   ¸A#ÁA#c                óÂ   — g }| D ]W  }t        |j                  «       «      }t        j                  |d¬«      }|r|j	                  |«       ŒG|j                  |«       ŒY |S )zÚTake a list of files/directories (with support for globbing through the glob library).

    Where a path/glob matches no file, we still include the raw path in the resulting list.

    Returns a list of file paths
    T)Ú	recursive)rd   rA   ÚfileglobÚglobÚextendÚappend)ÚpathsÚexpanded_pathsra   Úglobbed_filess       r    Úsplit_and_match_files_listrp   ‚   s_   € ð €Nàò (ˆÜ˜4Ÿ:™:›<Ó(ˆÜ Ÿ™ d°dÔ;ˆÙØ×!Ñ! -Õ0à×!Ñ! $Õ'ð(ð Ðr!   c                ó*   — t        t        | «      «      S )zôTake a string representing a list of files/directories (with support for globbing
    through the glob library).

    Where a path/glob matches no file, we still include the raw path in the resulting list.

    Returns a list of file paths
    )rp   Úsplit_commas)rm   s    r    Úsplit_and_match_filesrs   –   s   € ô &¤l°5Ó&9Ó:Ð:r!   c           	     óŒ   — g d¢}| |vr;t        j                  dj                  | dj                  d„ |D «       «      «      «      ‚| S )N)ÚnormalÚsilentÚskipÚerrorú$invalid choice '{}' (choose from {})ú, c              3  ó(   K  — | ]
  }d |› d �–— Œ y­w©ú'N© ©Ú.0rN   s     r    ú	<genexpr>z'check_follow_imports.<locals>.<genexpr>§   ó   è ø€ Ò!<¨q A a S¨¤(Ñ!<ùó   ‚©r1   r2   r6   Újoin©ÚchoiceÚchoicess     r    Úcheck_follow_importsr‰   ¢   sK   € Ú3€GØ�WÑÜ×(Ñ(Ø2×9Ñ9Ø˜Ÿ	™	Ñ!<°GÔ!<Ó<óó
ð 	
ð
 €Mr!   c           	     óŒ   — ddg}| |vr;t        j                  dj                  | dj                  d„ |D «       «      «      «      ‚| S )NÚglobalÚper_filery   rz   c              3  ó(   K  — | ]
  }d |› d �–— Œ y­wr|   r~   r   s     r    r�   z%check_junit_format.<locals>.<genexpr>²   r‚   rƒ   r„   r†   s     r    Úcheck_junit_formatrŽ   ­   sP   € Ø˜Ð$€GØ�WÑÜ×(Ñ(Ø2×9Ñ9Ø˜Ÿ	™	Ñ!<°GÔ!<Ó<óó
ð 	
ð
 €Mr!   c                ó^   — | j                  d«      }|r|d   dk(  r|j                  d«       |S )Nú,rQ   rJ   )rS   rT   )rF   rW   s     r    rr   rr   ¸   s/   € ð �K‰K˜Ó€EÙ��r‘˜b’Ø�	‰	�"ŒØ€Lr!   Úpython_versionÚcustom_typing_moduleÚcustom_typeshed_dirÚ	mypy_pathc                ó‚   — t        j                  d| «      D �cg c]  }t        |j                  «       «      ‘Œ c}S c c}w ©Nz[,:])r.   rS   rd   rA   ©ÚsrV   s     r    ú<lambda>r™   É   s*   € ¼B¿H¹HÀVÈQÓ<OÖP°qœK¨¯©«	Õ2ÒP€ ùÒPs   ™ <ÚfilesÚquickstart_fileÚ	junit_xmlÚjunit_formatÚfollow_importsÚno_site_packagesÚpluginsc                óZ   — t        | «      D �cg c]  }|j                  «       ‘Œ c}S c c}w r   ©rr   rA   r—   s     r    r™   r™   Ð   s   € ¬\¸!«_Ö=¨˜!Ÿ'™'�)Ò=€ ùÒ=ó   Ž(Úalways_truec                óZ   — t        | «      D �cg c]  }|j                  «       ‘Œ c}S c c}w r   r¢   r—   s     r    r™   r™   Ñ   s   € ´¸a³ÖA¨A˜aŸg™g�iÒA€ ùÒAr£   Úalways_falsec                óZ   — t        | «      D �cg c]  }|j                  «       ‘Œ c}S c c}w r   r¢   r—   s     r    r™   r™   Ò   ó   € ´,¸q³/ÖB¨Q˜qŸw™w�yÒB€ ùÒBr£   Úuntyped_calls_excludec                ól   — t        t        | «      D �cg c]  }|j                  «       ‘Œ c}«      S c c}w r   )r^   rr   rA   r—   s     r    r™   r™   Ó   s'   € Ô'BÜ(¨›OÖ,�qˆ�‰�Ò,ó(€ ùÚ,s   “1Úenable_incomplete_featurec                óZ   — t        | «      D �cg c]  }|j                  «       ‘Œ c}S c c}w r   r¢   r—   s     r    r™   r™   Ö   s   € ¼|ÈA»Ö+O¸!¨A¯G©G­IÒ+O€ ùÒ+Or£   Údisable_error_codec                óZ   — t        | «      D �cg c]  }|j                  «       ‘Œ c}S c c}w r   r¢   r—   s     r    r™   r™   ×   s   € ¼ÀQ»Ö$H°1 Q§W¡W¥YÒ$H€ ùÒ$Hr£   Úenable_error_codec                óZ   — t        | «      D �cg c]  }|j                  «       ‘Œ c}S c c}w r   r¢   r—   s     r    r™   r™   Ø   s   € ´|ÀA³Ö#G°! A§G¡G¥IÒ#G€ ùÒ#Gr£   c                óZ   — t        | «      D �cg c]  }|j                  «       ‘Œ c}S c c}w r   r¢   r—   s     r    r™   r™   Ù   r¨   r£   c                ó$   — | j                  «       gS r   ©rA   ©r˜   s    r    r™   r™   Ý   s   € ˜!Ÿ'™'›)˜€ r!   )Úpackage_rootÚ	cache_dirÚpython_executableÚstrictÚexcludeÚpackagesÚmodulesÚnum_workersz&Final[dict[str, _INI_PARSER_CALLABLE]]Úini_config_typesÚtoml_config_typesc                óR   — t        | d«      D �cg c]  }t        |«      ‘Œ c}S c c}w r–   )rX   rd   r—   s     r    r™   r™   è   s   € ¼	À!ÀVÓ8LÖM°1¤¨A¥ÒM€ ùÒMs   �$c                ó*   — t        t        | «      «      S r   )rp   rX   r´   s    r    r™   r™   é   s   € Ô5´iÀ³lÓC€ r!   c                ó*   — t        t        | «      «      S r   )rŽ   r0   r´   s    r    r™   r™   ê   s   € Ô"4´S¸³VÓ"<€ r!   c                ó*   — t        t        | «      «      S r   )r‰   r0   r´   s    r    r™   r™   ë   s   € Ô$8¼¸Q»Ó$@€ r!   c                ó*   — t        t        | «      «      S r   )r^   rX   r´   s    r    r™   r™   ï   s   € Ô+FÄyÐQRÃ|Ó+T€ r!   c                ó   — t        | «      S r   ©rX   r´   s    r    r™   r™   ñ   s
   € ¬	°!«€ r!   c                ó   — t        | «      S r   rÅ   r´   s    r    r™   r™   ò   s
   € ¤y°£|€ r!   rµ   r¹   rº   r»   c                ó|  — t         j                  j                  | «      sy 	 t        | «      rZt	        | d«      5 }t        j                  |«      }d d d «       j                  di «      }d|vry d|d   i}t        |«      }t        }n+t        j                  «       }|j                  | «       t        }t         j                  j%                  | «      t&        j(                  v rd|vry ||| fS # 1 sw Y   Œ�xY w# t
        j                  t        j                  t         f$ r}t#        | › d|› �|¬«       Y d }~y d }~ww xY w)NÚrbÚtoolÚmypyú: ©Úfile)r`   ra   ÚexistsÚis_tomlÚopenÚtomllibÚloadÚgetÚdestructure_overridesr¾   ÚconfigparserÚRawConfigParserÚreadr½   ÚTOMLDecodeErrorÚErrorÚConfigTOMLValueErrorÚprintÚbasenamer   ÚSHARED_CONFIG_NAMES)Úconfig_fileÚstderrÚfÚ	toml_dataÚparserÚconfig_typesrG   s          r    Ú_parse_individual_filerä   û   s   € ô �7‰7�>‰>˜+Ô&ØðÜ�;ÔÜ�k 4Ó(ð ,¨AÜ#ŸL™L¨›O�	÷,ð "Ÿ™ f¨bÓ1ˆIØ˜YÑ&ØØ ¨6Ñ!2Ð3ˆIÜ*¨9Ó5ˆFÜ,‰Lä!×1Ñ1Ó3ˆFØ�K‰K˜Ô$Ü+ˆLô 
‡w�w×Ñ˜Ó$¬×(DÑ(DÑDÈÐW]ÑI]Øà�< Ð,Ð,÷+,ð ,ûô ×#Ñ#¤\×%7Ñ%7Ô9MÐNò Ü��˜R ˜uÐ%¨FÕ3Üûðús5   ¢C7 ¹C+ÁC7 Á.AC7 Ã+C4Ã0C7 Ã7(D;ÄD6Ä6D;c                ó  ‡— t         j                  j                  t        j                  «       «      Š	 t        j
                  t        j                  z   D ]Q  }t         j                  j                  t         j                  j                  ‰|«      «      }t        || «      }|€ŒO|c S  t        ˆfd„dD «       «      rn(t         j                  j                  ‰«      }|‰k(  rn|ŠŒ²t        j                  D ]  }t        || «      }|€Œ|c S  y )Nc              3  ó˜   •K  — | ]A  }t         j                  j                  t         j                  j                  ‰|«      «      –— ŒC y ­wr   )r`   ra   rÎ   r…   )r€   Úcvs_rootÚcurrent_dirs     €r    r�   z$_find_config_file.<locals>.<genexpr>+  s2   øè ø€ ò 
ØDLŒB�G‰G�N‰Nœ2Ÿ7™7Ÿ<™<¨°XÓ>×?ñ
ùs   ƒAA
)z.gitz.hg)r`   ra   ÚabspathÚgetcwdr   ÚCONFIG_NAMESrÝ   Úrelpathr…   rä   ÚanyÚdirnameÚUSER_CONFIG_FILES)rß   ÚnamerÞ   ÚretÚ
parent_dirrè   s        @r    Ú_find_config_fileró     sò   ø€ ô —'‘'—/‘/¤"§)¡)£+Ó.€Kà
Ü×)Ñ)¬H×,HÑ,HÑHò 	ˆDÜŸ'™'Ÿ/™/¬"¯'©'¯,©,°{ÀDÓ*IÓJˆKÜ(¨°fÓ=ˆCØˆ{ØØŠJð	ô ó 
ØP_ô
ô 
ð Ü—W‘W—_‘_ [Ó1ˆ
Ø˜Ò$ØØ ˆð ô"  ×1Ñ1ò ˆÜ$ [°&Ó9ˆØˆ;ØØŠ
ð	ð r!   c                ó(  ‡— |xs t         j                  }|xs t         j                  }|�t        ||«      n
t	        |«      }|€y|\  }}}|| _        t        j                  j                  t        j                  j                  |«      «      t        j                  d<   d|vrB|s/t        j                  j                  |«      t        j                  vrnt        |› d�|¬«       n]|d   }	|› d�}
t        |
| ||	||«      \  }}|j!                  «       D ]  \  }}t#        | ||«       Œ | j$                  j'                  |«       |j!                  «       D �]¶  \  }}	|j)                  d«      sŒt+        ||«      }
t        |
| ||	||«      \  }}|r<t        |
dj-                  d	j/                  d
„ t1        |«      D «       «      «      |¬«       t3        |«      t4        z
  rqt        |
dj-                  d	j/                  t1        t3        |«      t4        z
  «      «      «      |¬«       |j!                  «       D ��ci c]  \  }}|t4        v sŒ||“Œ }}}|dd }|j7                  d«      D ]¥  Š‰j9                  t        j:                  d«      Št        j<                  r ‰j9                  t        j<                  d«      Št?        ˆfd„dD «       «      s!t?        d„ ‰j7                  d«      D «       «      rt        |
d|¬«       Œ—|| j@                  ‰<   Œ§ �Œ¹ yc c}}w )z¢Parse a config file into an Options object.

    Errors are written to stderr but are not fatal.

    If filename is None, fall back to default config files.
    NÚMYPY_CONFIG_FILE_DIRrÊ   z": No [mypy] section in config filerÌ   z
: [mypy]: úmypy-z3Per-module sections should not specify reports ({})rz   c              3  ó&   K  — | ]	  }|d z   –— Œ y­w)Ú_reportNr~   )r€   r˜   s     r    r�   z$parse_config_file.<locals>.<genexpr>p  s   è ø€ Ò!M°A ! i¥-Ñ!Mùs   ‚z=Per-module sections should only specify per-module flags ({})é   r�   rL   c              3  ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r~   )r€   Úcrj   s     €r    r�   z$parse_config_file.<locals>.<genexpr>…  s   øè ø€ Ò1 Q�q˜D”yÑ1ùó   ƒz?[]!c              3  ó2   K  — | ]  }d |v xr |d k7  –— Œ y­w)rZ   Nr~   r   s     r    r�   z$parse_config_file.<locals>.<genexpr>…  s%   è ø€ ò 9Ø./�C˜1�HÒ)  c¡Ó)ñ9ùs   ‚ziPatterns must be fully-qualified module names, optionally with '*' in some components (e.g spam.*.eggs.*))!ÚsysÚstdoutrß   rä   ró   rÞ   r`   ra   rî   ré   ÚenvironrÜ   r   rÝ   rÛ   Úparse_sectionrW   ÚsetattrÚreport_dirsÚupdateÚ
startswithÚ
get_prefixr6   r…   ÚsortedÚsetr   rS   ÚreplaceÚsepÚaltseprí   Úper_module_options)ÚoptionsÚset_strict_flagsÚfilenamerÿ   rß   rñ   râ   rã   Ú	file_readÚsectionÚprefixÚupdatesr  Úkr9   rð   Úglobsrj   s                    @r    Úparse_config_filer  =  sÔ  ø€ ð Ò!”s—z‘z€FØÒ!”s—z‘z€Fð Ðô 	˜x¨Ô0ä˜vÓ&ð ð
 €{ØØ&)Ñ#€FˆL˜)à#€GÔÜ)+¯©¯©¼¿¹¿¹ÈÓ9SÓ)T„B‡J�JÐ%Ñ&à�VÑÙ”r—w‘w×'Ñ'¨	Ó2¼(×:VÑ:VÑVÜ�Y�KÐAÐBÈÖPà˜‘.ˆØ�;˜jÐ)ˆÜ,Ø�GÐ-¨w¸Àfó 
Ñˆ�ð —M‘M“Oò 	#‰DˆAˆqÜ�G˜Q Õ"ð	#à×Ñ×"Ñ" ;Ô/àŸ™›ó )?‰ˆˆgØ�?‰?˜7Õ#Ü 	¨4Ó0ˆFÜ#0Ø˜Ð!1°7¸LÈ&ó$Ñ ˆG�[ñ ÜØØI×PÑPØŸ	™	Ñ!M¼ÀÓ9LÔ!MÓMóð  õô �7‹|Ô0Ò0ÜØØS×ZÑZØŸ	™	¤&¬¨W«Ô8JÑ)JÓ"KÓLóð  õð -4¯M©M«O×W¡D A q¸qÔDVÒ?V˜1˜a™4ÐW�ÑWà˜˜�HˆEØŸ™ CÓ(ò ?�à—|‘|¤B§F¡F¨CÓ0�Ü—9’9ØŸ<™<¬¯	©	°3Ó7�DäÓ1¨&Ô1Ô1´Sñ 9Ø37·:±:¸c³?ô9ô 6ô ØðJà#ö	ð 8?�G×.Ñ.¨tÒ4ò!?ñ3)?ùó, Xs   È3LÉLc                óz   — t        | «      r'ddj                  |j                  d«      dd  «      z  }n|}| › d|› d�S )Nzmodule = "%s"ú-r+   z: [z]:)rÏ   r…   rS   )r  rð   Úmodule_name_strs      r    r  r  ’  sE   € ÜˆyÔØ)¨C¯H©H°T·Z±ZÀ³_ÀQÀRÐ5HÓ,IÑI‰àˆàˆ[˜˜OÐ,¨BÐ/Ð/r!   c                ó@   — | j                  «       j                  d«      S )Nz.toml)ÚlowerÚendswith)r  s    r    rÏ   rÏ   ›  s   € Ø�>‰>Ó×$Ñ$ WÓ-Ð-r!   c           
     ó  — d| d   vr| S t        | d   d   t        «      st        d«      ‚| j                  «       }|d   d   D ]¼  }d|vrt        d«      ‚t        |d   t        «      r|d   g}n$t        |d   t        «      r|d   }nt        d«      ‚|D ]h  }|j                  «       }|d= d|› �}||vr|||<   Œ%|j                  «       D ]1  \  }}|||   v r||   |   |k7  rt        d|› d	|› d
�«      ‚|||   |<   Œ3 Œj Œ¾ |d   d= |S )aF  Take the new [[tool.mypy.overrides]] section array in the pyproject.toml file,
    and convert it back to a flatter structure that the existing config_parser can handle.

    E.g. the following pyproject.toml file:

        [[tool.mypy.overrides]]
        module = [
            "a.b",
            "b.*"
        ]
        disallow_untyped_defs = true

        [[tool.mypy.overrides]]
        module = 'c'
        disallow_untyped_defs = false

    Would map to the following config dict that it would have gotten from parsing an equivalent
    ini file:

        {
            "mypy-a.b": {
                disallow_untyped_defs = true,
            },
            "mypy-b.*": {
                disallow_untyped_defs = true,
            },
            "mypy-c": {
                disallow_untyped_defs: false,
            },
        }
    Ú	overridesrÊ   z~tool.mypy.overrides sections must be an array. Please make sure you are using double brackets like so: [[tool.mypy.overrides]]Úmodulezetoml config file contains a [[tool.mypy.overrides]] section, but no module to override was specified.zytoml config file contains a [[tool.mypy.overrides]] section with a module value that is not a string or a list of stringsrö   z\toml config file contains [[tool.mypy.overrides]] sections with conflicting values. Module 'z ' has two different values for 'r}   )r7   ÚlistrÚ   Úcopyr0   rW   )	rá   ÚresultÚoverrider»   r  Úmodule_overridesÚold_config_nameÚnew_keyÚ	new_values	            r    rÔ   rÔ   Ÿ  s�  € ð@ ˜) FÑ+Ñ+ØÐä�i Ñ'¨Ñ4´dÔ;Ü"ðRó
ð 	
ð
 �^‰^Ó€FØ˜6‘N ;Ñ/ò #AˆØ˜8Ñ#Ü&ðDóð ô
 �h˜xÑ(¬#Ô.Ø Ñ)Ð*‰GÜ˜ Ñ*¬DÔ1Ø˜xÑ(‰Gä&ðóð ð ò 	AˆFØ'Ÿ}™}›ÐØ  Ð*Ø % f XÐ.ˆOØ fÑ,Ø*:��Ò'à*:×*@Ñ*@Ó*Bò 
AÑ&�G˜Yà 6¨/Ñ#:Ñ:Ø" ?Ñ3°GÑ<À	ÒIä2ð/à/5¨hÐ6VÐW^ÐV_Ð_`ðbóð ð
 8A�F˜?Ñ+¨GÒ4ñ
Añ	Að%#AðJ 	ˆv‰�{Ð#Ø€Mr!   c                ó  — i }i }dddœ}|D �]R  }	d}
|	}|dk(  rd}|	|v r||	   }�nˆ|	|v r t        | › d|	› d||	   › d	||	   › d
�|¬«       Œ>t        ||d«      }|�€E|	j                  d«      rL|	dd j                  dd«      }|t        j
                  v rt        ||	   «      ||<   nt        | › d|	› �|¬«       Œ«|	j                  d«      rnÄ|	j                  d«      rt        ||dd «      r|dd }d}
nœ|	j                  d«      rt        |d|z   «      rd|z   }d}
nt|	j                  d«      rt        ||dd «      r|dd }d}
nL|	j                  d«      rt        |d|dd z   «      rd|dd z   }d}
n|	dk(  rnt        | › d|	› d||	   › �|¬«       |
rt        ||d«      }n�Œ“|�t        |«      nd}d}	 |t        u rBt        |t        «      rt        |j                  |	«      «      }n|j                  |	«      }|
rS| }nOt!        |«      r/|
rt        | › d|› �|¬«       �Œ	  ||j                  |	«      «      }nt        | › d|	› d �|¬«       �Œ>|	dk(  r|r |«        �ŒN|||<   �ŒU d|vrg |d<   d|vrg |d<   ||fS # t"        $ r*}t        | › |	› d|› �|¬«       |j$                  }Y d}~Œ\d}~wt&        j(                  $ r}t        | › |	› d|› �|¬«       Y d}~�ŒÊd}~ww xY w# t*        $ r}t        | › |	› d|› �|¬«       Y d}~�Œõd}~ww xY w)!z|Parse one section of a config file.

    Returns a dict of option values encountered, and a dict of report directories.
    r¯   r­   )Úenabled_error_codesÚdisabled_error_codesFÚallow_redefinition_newÚallow_redefinitionzUnrecognized option: z = z (did you mean z?)rÌ   Nrø   iùÿÿÿÚ_r  zUnrecognized report type: Úx_Úno_r   TÚallowÚdisÚdisallowÚshow_Úhide_rù   r¸   zCan not invert non-boolean key rË   zDon't know what type z should have)rÛ   Úgetattrr  r	  r   ÚREPORTER_NAMESr0   r  ÚhasattrrM   Úboolr7   ÚdictÚconvert_to_booleanrÓ   Ú
getbooleanÚcallabler   r   r1   r2   rE   )r  Útemplater  r  rã   rß   Úresultsr  Úinvalid_optionsÚkeyÚinvertÚoptions_keyÚctÚdvÚreport_typer9   Úerr_versionrG   s                     r    r  r  ò  s§  € ð "$€GØ"$€Kð
  3Ø 4ñ€Oð
 ó Q!ˆØˆð ˆàÐ2Ò2Ø.ˆKØ�,ÑØ˜cÑ"ŠBØ�OÑ#ÜØ�(Ð/°¨u°C¸À¹°~Ø! /°#Ñ"6Ð!7°rð;àõð
 ä˜ ;°Ó5ˆBØ‰zØ—<‘< 	Ô*Ø"% c r (×"2Ñ"2°3¸Ó"<�KØ"¤h×&=Ñ&=Ñ=Ü36°w¸s±|Ó3D˜ KÒ0ä  Ð(BÀ3À%ÐHÈvÕVØØ—>‘> $Ô'ØØ—^‘^ EÔ*¬w°xÀÈQÈRÀÔ/QØ"-¨a¨b /�KØ!‘FØ—^‘^ GÔ,´¸À5È;ÑCVÔ1WØ"'¨+Ñ"5�KØ!‘FØ—^‘^ JÔ/´G¸HÀkÐRSÐRTÀoÔ4VØ"-¨a¨b /�KØ!‘FØ—^‘^ GÔ,´¸À7È[ÐYZÐY[È_ÑC\Ô1]Ø")¨K¸¸¨OÑ";�KØ!‘FØ˜H’_Øä˜V˜HÐ$9¸#¸¸cÀ'È#Á,ÀÐPÐW]Õ^ÙÜ  ¨;¸Ó=‘BáØ˜^”�b”°ˆBØˆð	Ø”T‰zÜ˜g¤tÔ,Ü*¨7¯;©;°sÓ+;Ó<‘Aà×*Ñ*¨3Ó/�AÙØ˜‘AÜ˜"”ÙÜ˜V˜HÐ$CÀKÀ=ÐQÐX^Õ_ÙðÙ˜7Ÿ;™; sÓ+Ó,‘Aô ˜˜Ð 5°c°U¸,ÐGÈfÕUÙð �(Š?ÙÙ Ô"ÙØ ˆ�ÓðcQ!ðh  7Ñ*Ø(*ˆÐ$Ñ%Ø 'Ñ)Ø')ˆÐ#Ñ$à�KÐÐøô1 (ò -Ü˜V˜H S E¨¨K¨=Ð9ÀÕGØ#×,Ñ,•AûÜ×1Ñ1ò Ü˜V˜H S E¨¨C¨5Ð1¸Õ?Ýûðûô ò 	Ü�V�H˜S˜E  C 5Ð)°Õ7Ýûð	úsU   Æ1A)KÈI8È4KÉ8	KÊ J&Ê!KÊ&KÊ<KËKËKËKË	LË'LÌLc                ó"  — t        | t        «      r| S t        | t        «      st        | «      } | j                  «       t        j
                  j                  vrt        d| › �«      ‚t        j
                  j                  | j                  «          S )zAReturn a boolean value translating from other types if necessary.zNot a boolean: )r7   r8  r0   r  rÕ   rÖ   ÚBOOLEAN_STATESrE   )rF   s    r    r:  r:  d  sm   € ä�%œÔØˆÜ�eœSÔ!Ü�E“
ˆØ‡{�{ƒ}œL×8Ñ8×GÑGÑGÜ˜?¨5¨'Ð2Ó3Ð3Ü×'Ñ'×6Ñ6°u·{±{³}ÑEÐEr!   c                ó^  — g }g }g }d}|t        | «      k  rä| |   dk(  r1|j                  dj                  |«      j                  «       «       g }n—| |   dk(  r{|dz  }|t        | «      k  r8| |   dk7  r0|j                  | |   «       |dz  }|t        | «      k  r	| |   dk7  rŒ0|t        | «      k(  r6|j                  d«       |j	                  «        n|j                  | |   «       |dz  }|t        | «      k  rŒä|r.|j                  dj                  |«      j                  «       «       ||fS )zfSplit s on commas, except during quoted sections.

    Returns the parts and a list of error messages.r   r�   rJ   ú"r+   z+Unterminated quote in configuration comment)Úlenrl   r…   rA   Úclear)r˜   ÚpartsÚcurÚerrorsÚis        r    Úsplit_directiverQ  o  s  € ð €EØ€CØ€FØ	€AØ
Œc�!‹fŠ*ØˆQ‰4�3Š;Ø�L‰L˜Ÿ™ ›×+Ñ+Ó-Ô.Ø‰CØˆq‰T�SŠ[Ø�‰FˆAØ”c˜!“f’*  1¡¨¢Ø—
‘
˜1˜Q™4Ô Ø�Q‘�ð ”c˜!“f’*  1¡¨£ð ”C˜“FŠ{Ø—‘ÐKÔLØ—	‘	•à�J‰J�q˜‘tÔØ	ˆQ‰ˆð Œc�!‹f‹*ñ Ø�‰�R—W‘W˜S“\×'Ñ'Ó)Ô*à�&ˆ=Ðr!   c                ó¸   — i }t        | «      \  }}|D ]B  }d|vr|}d}nd„ |j                  dd«      D «       \  }}|j                  dd«      }|€d}|||<   ŒD ||fS )z5Rewrite the mypy comment syntax into ini file syntax.ú=Nc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr   r³   r   s     r    r�   z.mypy_comments_to_config_map.<locals>.<genexpr>•  s   è ø€ ÒB¨˜1Ÿ7™7Ÿ9ÑBùs   ‚r+   r  r-  ÚTrue)rQ  rS   r	  )Úliner=  r  ÚentriesrO  Úentryrð   rF   s           r    Úmypy_comments_to_config_maprY  Œ  s~   € à€GÜ% dÓ+�O€GˆVØò 
ˆØ�eÑØˆDØ‰EáB¨e¯k©k¸#¸qÓ.AÔB‰KˆD�%à�|‰|˜C Ó%ˆØˆ=ØˆEØˆ�Šð
ð �Fˆ?Ðr!   c           	     óš  ‡‡— g }g g dœ}| D �]¹  \  Š}t        j                  «       }t        ||«      \  }}d|v r|j                  ‰df«       |d= ||d<   |j	                  ˆfd„|D «       «       t        «       }dŠdˆfd„}	t        d||	|d   t        |¬	«      \  }
}|j	                  ˆfd
„|j                  «       j                  «       j                  d«      D «       «       |r|j                  ‰df«       ‰r|j                  ‰df«       d|
v rQt        |
d   x}t        «      r<t        |j                  dg «      x}t        «      rt        t        ||z   «      «      |
d<   d|
v rQt        |
d   x}t        «      r<t        |j                  dg «      x}t        «      rt        t        ||z   «      «      |
d<   |j!                  |
«       �Œ¼ ||fS )zžParse a collection of inline mypy: configuration comments.

    Returns a dictionary of options to be applied and a list of error messages
    generated.
    )r¯   r­   r‘   z4python_version not supported in inline configurationÚdummyc              3  ó&   •K  — | ]  }‰|f–— Œ
 y ­wr   r~   ©r€   rN   Úlinenos     €r    r�   z&parse_mypy_comments.<locals>.<genexpr>µ  s   øè ø€ Ò8 a�v˜q”kÑ8ùrü   Fc                 ó
   •— dŠ y )NTr~   )Ústrict_founds   €r    r  z-parse_mypy_comments.<locals>.set_strict_flagsº  s   ø€ à‰Lr!   rJ   )rß   c              3  ó,   •K  — | ]  }|sŒ‰|f–— Œ y ­wr   r~   r]  s     €r    r�   z&parse_mypy_comments.<locals>.<genexpr>Á  s   øè ø€ ÒV aÒTU�v˜q”kÑVùs   ƒ‹	ú
z-Reports not supported in inline configurationz¿Setting "strict" not supported in inline configuration: specify it in a configuration file instead, or set individual inline flags (see "mypy -h" for the list of flags enabled in strict mode)r¯   r­   )r#   r$   )rÕ   rÖ   rY  rl   rk   r   r  r½   ÚgetvaluerA   rS   r7   r   rÓ   r  r  r  )r   r=  rO  ÚsectionsrV  râ   r  Úparse_errorsrß   r  Únew_sectionsÚreportsÚneecÚeecÚndecÚdecr^  r`  s                   @@r    Úparse_mypy_commentsrl  Ÿ  sÛ  ù€ ð %'€FØ8:ÐRTÑ"U€Hàó 4&‰ˆ�ô ×-Ñ-Ó/ˆÜ ;¸DÀ(Ó KÑˆ�Ø˜wÑ&Ø�M‰M˜6Ð#YÐZÔ[ØÐ(Ð)à!ˆˆw‰Ø�‰Ó8¨<Ô8Ô8ä“ˆØˆõ	 ô !.Ø�Ð*¨F°7©OÔ=MÐV\ô!
Ñˆ�gð 	�‰ÓV¨6¯?©?Ó+<×+BÑ+BÓ+D×+JÑ+JÈ4Ó+PÔVÔVÙØ�M‰M˜6Ð#RÐSÔTÙØ�M‰MàðSðôð   <Ñ/Ü <Ð0CÑ#DÐD˜4ÄdÔKÜ (§,¡,Ð/BÀBÓ"GÐG˜3ÌÔNä06´s¸4À#¹:³Ó0GˆLÐ,Ñ-à  LÑ0Ü <Ð0DÑ#EÐE˜4ÄtÔLÜ (§,¡,Ð/CÀRÓ"HÐH˜3Ì$ÔOä17¼¸DÀ3¹J»Ó1HˆLÐ-Ñ.Ø�‰˜Ö%ði4&ðj �VÐÐr!   c                óŒ   — | r|syt        | «      sdj                  d„ |D «       «      S ddj                  t        |«      «      z  S )NrJ   rz   c              3  ó(   K  — | ]
  }d |› d�–— Œ y­w)z[mypy-ú]Nr~   )r€   r  s     r    r�   z*get_config_module_names.<locals>.<genexpr>ç  s   è ø€ ÒB°˜6 & ¨Ô+ÑBùrƒ   zmodule = ['%s']z', ')rÏ   r…   r  )r  r»   s     r    Úget_config_module_namesrp  â  s?   € Ù™7Øä�8ÔØ�y‰yÑB¸'ÔBÓBÐBà §¡¬F°7«OÓ <Ñ=Ð=r!   c                  ó   — e Zd Zy)rÚ   N)r%   r&   r'   r~   r!   r    rÚ   rÚ   ì  s   „ Ør!   rÚ   )r9   zstr | floatr#   r"   )r9   z	str | intr#   r3   )r�   )r9   zstr | Sequence[str] | objectrU   r0   r#   ú	list[str])r]   rr  r#   rr  )ra   r0   r#   r0   )r9   zstr | Sequence[str]r#   rr  )rm   zSequence[str]r#   rr  )rm   r0   r#   rr  )r‡   r0   r#   r0   )rF   r0   r#   rr  r   )rÞ   r0   rß   úTextIO | Noner#   úLtuple[MutableMapping[str, Any], dict[str, _INI_PARSER_CALLABLE], str] | None)rß   rs  r#   rt  )NN)r  r   r  úCallable[[], None]r  ú
str | Nonerÿ   rs  rß   rs  r#   r$   )r  r0   rð   r0   r#   r0   )r  r0   r#   r8  )rá   údict[str, Any]r#   rw  )r  r0   r=  r   r  ru  r  zMapping[str, Any]rã   rw  rß   r   r#   z(tuple[dict[str, object], dict[str, str]])rF   z
Any | Noner#   r8  )r˜   r0   r#   ztuple[list[str], list[str]])rV  r0   r=  r   r#   z tuple[dict[str, str], list[str]])r   zlist[tuple[int, str]]r=  r   r#   z/tuple[dict[str, object], list[tuple[int, str]]])r  rv  r»   rr  r#   r0   )KÚ
__future__r   r1   rÕ   rj   ri   r`   r.   rþ   Úior   Úversion_inforÑ   ÚtomliÚcollections.abcr   r   r	   r
   Útypingr   r   r   r   Útyping_extensionsr   rÊ   r   Úmypy.optionsr   r   Ú	mypy.utilr   r0   r8  r3   r8   r9  r   Útupler   Ú__annotations__r   r2   r   r>   rH   rX   r^   rd   rf   rp   rs   r‰   rŽ   rr   r½   r!  r¾   r  rä   ró   r  r  rÏ   rÔ   rß   r  r:  rQ  rY  rl  rp  rE   rÚ   r~   r!   r    ú<module>rƒ     s  ðÞ "ã Û Û Û 	Û 	Û 
Ý à×Ñ�wÒÜãç GÓ Gß 0Ó 0Ý #å ß 4Ý +ð ˆ$�J�Ñ�uÑ˜t C¨ H™~Ñ-°°S±	Ñ9¸EÀ#ÀsÀ(¹OÑKð �Yó ð #+¨C¨5Ð2EÐ+EÑ"FÐ �iÓ Fô �x×1Ñ1ô  óó0
ôó6ó8ó/óó(	;óóóð<Ø�mð<à˜Cð<ð ˜;ð<ð ÑPð	<ð
 Ð"ð<ð �{ð<ð �ð<ð Ð&ð<ð Ð*ð<ð ˜ð<ð Ñ=ð<ð ÑAð<ð ÑBð<ð ñ ð<ð"  Ñ!Oð#<ð$ ÑHð%<ð& ÑGð'<ñ( CØØ$ØÙ$ØØØ$ò7<Ð Ð8ó ð> =M×<QÑ<QÓ<SÐ Ð9Ó SØ × Ñ ðØ˜-ðàÑMðð 	ÑCðð 	Ñ<ð	ð
 	Ñ@ðð 	�9ðð 	�yðð 	˜	ðð 	 Ñ!Tðð 	$ Yðð 	Ñ4ðð 	Ñ3ðð 	˜	ðð 	Ð'ðð 	�Iðð  	�9ð!ôð. /3ð-Øð-Ø+ð-àQó-ðF !ðØðàQóðH !Ø ðR?ØðR?à(ðR?ð ðR?ð ð	R?ð
 ðR?ð 
óR?ój0ó.óPðr —Z‘Zðo Øðo àðo ð )ðo ð ð	o ð
 !ðo ð ðo ð .óo ódFóó:ð&@Ø
ð@Ø+2ð@à4ó@óF>ô	˜:õ 	r!   