
    *e][              
         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
 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mZmZmZmZ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$ ee%e&e'e(ee%e%f         ee%         ee'e'f         f         Z)d
e*d<   eege)f         Z+d
e*d<   d|dZ,d}d~dZ-ddZ.ddZ/ddZ0ddZ1dd!Z2dd"Z3dd$Z4dd%Z5dd'Z6i d(e,d)e%d*e0d+d, d-e3d.e0d/e0d0e5d1e4d2e&d3d4 d5d6 d7d8 d9d: d;d< d=d> d?d@ dA e0e0e&dB e-e-dCZ7dDe*dE<   e78                                Z9dDe*dF<   e9:                    i d(e,d+dG d-dH d0dI d1dJ d3e-d5e-d7e-d9dK d;e-d=dL d?dM dNe-dOe1dPe-dQe-           	 	 ddd\Z;dd_Z<ddaZ=dddZ>ej?        fddlZ@ddnZAddqZBddtZCddxZDddyZE G dz d{eF          ZGdS )    )annotationsN)StringIO)error_codes)      )AnyCallableDictFinalIterableListMappingMutableMappingSequenceTextIOTupleUnion)	TypeAlias)defaults)PER_MODULE_OPTIONSOptions
_TypeAlias_CONFIG_VALUE_TYPES_INI_PARSER_CALLABLEvstr | floatreturntuple[int, int]c                   t          j        dt          |                     }|st          j        d|  d          t          |                    d                    t          |                    d                    }}|dk    r|dk    rn{|dk    r]|t          j        d         k     rF dj	        |gt          j        R  }t          | t                    r|d	z  }t          j        |          nt          j        d
| d          ||fS )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 versionzPython major version 'z' out of range (must be 3))rematchstrargparseArgumentTypeErrorintgroupr   PYTHON3_VERSION_MINformat
isinstancefloat)r   mmajorminormsgs        2lib/python3.11/site-packages/mypy/config_parser.pyparse_versionr3   +   s(   
#SVV,,A c()aA)a)a)abbbqwwqzz??C

OO5Ezzeqjj	!8/222QJQ 4  C !U## QPP,S111 3 (FUFFF
 
 	
 %<    [,]str | Sequence[str]split_regexr%   	list[str]c                    t          | t                    rd t          j        ||           D             S d | D             S )z6Split and trim a str or list of str into a list of strc                6    g | ]}|                                 S  strip.0ps     r2   
<listcomp>ztry_split.<locals>.<listcomp>F   s     <<<a		<<<r4   c                6    g | ]}|                                 S r;   r<   r>   s     r2   rA   ztry_split.<locals>.<listcomp>H   s     !!!!AGGII!!!r4   )r,   r%   r#   split)r   r7   s     r2   	try_splitrD   C   sH    !S =<<28K#;#;<<<<!!q!!!!r4   codesc                    t          |           t          t          j                              z
  }|r7t          j        dd                    t          |                               | S )NzInvalid error code(s): , )setr   keysr&   r'   joinsorted)rE   invalid_codess     r2   validate_codesrM   K   sf    JJ[%5%7%7!8!88M 
(Hdii}0E0E&F&FHH
 
 	
 Lr4   
allow_listc                    | D ]A}d| }d|v rt          j        | d          d|v sd|v rt          j        | d          B| 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))r&   r'   )rN   r@   r1   s      r2   validate_package_allow_listrS   T   s     	 	.1..!88,MMM   199q,YYY   ! r4   pathc                z    t           j                            t           j                            |                     S )ziExpand the user home directory and any environment variables contained within
    the provided path.
    )osrT   
expandvars
expanduser)rT   s    r2   expand_pathrY   b   s*    
 7bg0066777r4   c                    t          | t                    r+|                                 r|                                 gng S d | D             S )Nc                ^    g | ]*}|                                 |                                 +S r;   r<   r>   s     r2   rA   z(str_or_array_as_list.<locals>.<listcomp>m   s-    ...!AGGII.AGGII...r4   )r,   r%   r=   )r   s    r2   str_or_array_as_listr\   j   sI    !S 0ggii/		{{R/..q....r4   pathsSequence[str]c                    g }| D ]f}t          |                                          }t          j        |d          }|r|                    |           Q|                    |           g|S )zTake 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)rY   r=   fileglobglobextendappend)r]   expanded_pathsrT   globbed_filess       r2   split_and_match_files_listrg   p   s}     N ( (4::<<(( dd;;; 	(!!-0000!!$''''r4   c                F    t          |                     d                    S )zTake 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
    ,)rg   rC   )r]   s    r2   split_and_match_filesrj      s     &ekk#&6&6777r4   choicec           	         g d}| |vrEt          j        d                    | d                    d |D                                           | S )N)normalsilentskiperror$invalid choice '{}' (choose from {})rG   c              3  "   K   | ]
}d | d V  dS 'Nr;   r?   xs     r2   	<genexpr>z'check_follow_imports.<locals>.<genexpr>   *      !<!<q(a(((!<!<!<!<!<!<r4   r&   r'   r+   rJ   rk   choicess     r2   check_follow_importsr|      sg    333GW(299		!<!<G!<!<!<<< 
 
 	

 Mr4   c           	         ddg}| |vrEt          j        d                    | d                    d |D                                           | S )Nglobalper_filerq   rG   c              3  "   K   | ]
}d | d V  dS rs   r;   ru   s     r2   rw   z%check_junit_format.<locals>.<genexpr>   rx   r4   ry   rz   s     r2   check_junit_formatr      sf    $GW(299		!<!<G!<!<!<<< 
 
 	

 Mr4   valuec                v    |                      d          }|r!|d         dk    r|                    d           |S )Nri    )rC   pop)r   itemss     r2   split_commasr      s=     KKE rb		"Lr4   python_versioncustom_typing_modulecustom_typeshed_dir	mypy_pathc                @    d t          j        d|           D             S )Nc                P    g | ]#}t          |                                          $S r;   )rY   r=   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>   s(    PPPqK		22PPPr4   [,:])r#   rC   ss    r2   <lambda>r      s!    PPBHVQ<O<OPPP r4   filesquickstart_file	junit_xmljunit_formatfollow_importsno_site_packagespluginsc                4    d t          |           D             S )Nc                6    g | ]}|                                 S r;   r<   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>   s     ===!''))===r4   r   r   s    r2   r   r      s    ==\!__=== r4   always_truec                4    d t          |           D             S )Nc                6    g | ]}|                                 S r;   r<   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>   s     AAAAaggiiAAAr4   r   r   s    r2   r   r      s    AAaAAA r4   always_falsec                4    d t          |           D             S )Nc                6    g | ]}|                                 S r;   r<   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>        BBBQqwwyyBBBr4   r   r   s    r2   r   r          BB,q//BBB r4   untyped_calls_excludec                N    t          d t          |           D                       S )Nc                6    g | ]}|                                 S r;   r<   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>   s     ,,,q,,,r4   )rS   r   r   s    r2   r   r      s(    'B,,LOO,,,( ( r4   enable_incomplete_featurec                4    d t          |           D             S )Nc                6    g | ]}|                                 S r;   r<   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>   s     +O+O+O!AGGII+O+O+Or4   r   r   s    r2   r   r      s    +O+O|A+O+O+O r4   disable_error_codec                N    t          d t          |           D                       S )Nc                6    g | ]}|                                 S r;   r<   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>   s     3W3W3W!AGGII3W3W3Wr4   rM   r   r   s    r2   r   r      s$    N3W3W|TU3W3W3W$X$X r4   enable_error_codec                N    t          d t          |           D                       S )Nc                6    g | ]}|                                 S r;   r<   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>   s     2V2V2V177992V2V2Vr4   r   r   s    r2   r   r      s$    >2V2VlSToo2V2V2V#W#W r4   c                4    d t          |           D             S )Nc                6    g | ]}|                                 S r;   r<   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>   r   r4   r   r   s    r2   r   r      r   r4   c                ,    |                                  gS Nr<   r   s    r2   r   r      s    !'')) r4   )package_root	cache_dirpython_executablestrictexcludepackagesmodulesz&Final[dict[str, _INI_PARSER_CALLABLE]]ini_config_typestoml_config_typesc                6    d t          | d          D             S )Nc                ,    g | ]}t          |          S r;   )rY   r>   s     r2   rA   z<lambda>.<locals>.<listcomp>   s    MMM1AMMMr4   r   )rD   r   s    r2   r   r      s    MM	!V8L8LMMM r4   c                :    t          t          |                     S r   )rg   rD   r   s    r2   r   r      s    5illCC r4   c                :    t          t          |                     S r   )r   r%   r   s    r2   r   r      s    "4SVV"<"< r4   c                :    t          t          |                     S r   )r|   r%   r   s    r2   r   r      s    $8Q$@$@ r4   c                :    t          t          |                     S r   )rS   rD   r   s    r2   r   r      s    +FyQR||+T+T r4   c                :    t          t          |                     S r   rM   rD   r   s    r2   r   r      s    y||(D(D r4   c                :    t          t          |                     S r   r   r   s    r2   r   r      s    ~ill'C'C r4   r   r   r   r   optionsr   set_strict_flagsCallable[[], None]filename
str | NonestdoutTextIO | NonestderrNonec                	   |pt           j        }|pt           j        }||f}n8t          t          j        j        t          j                  }t          |          }t          j                    }|D ]*}t          j                            |          s#	 t          |          rxt          |d          5 }	t          j        |	          }
ddd           n# 1 swxY w Y   |
                    di           }
d|
vrd|
d         i}
t%          |
          }t&          }n|                    |           |}t*          }|t          j        v rd|vr|}|| _         nG# t          j        t          j        t4          f$ r!}t7          | d| |           Y d}~$d}~ww xY wdS t          j                            t          j                            |                    t          j        d<   d|vr%|s|t          j        vrt7          | d|           ni|d         }| d	}t?          || ||||          \  }}|                                 D ]\  }}tC          | ||           | j"        #                    |           |                                 D ]\  }}|$                    d
          rtK          ||          }t?          || ||||          \  }}|rOt7          |d&                    d'                    d tQ          |          D                                 |           tS          |          tT          z
  rxt7          |d&                    d'                    tQ          tS          |          tT          z
                                |           d |                                 D             }|dd         }|+                    d          D ],                    t          j-        d          t          j.        r ,                    t          j.        d          t_          fddD                       s,t_          d +                    d          D                       rt7          |d|           || j0        <   dS )zParse 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rbtoolmypy: fileMYPY_CONFIG_FILE_DIRz": No [mypy] section in config filez
: [mypy]: mypy-z3Per-module sections should not specify reports ({})rG   c              3      K   | ]	}|d z   V  
dS )_reportNr;   )r?   r   s     r2   rw   z$parse_config_file.<locals>.<genexpr>6  s&      !M!MA!i-!M!M!M!M!M!Mr4   z=Per-module sections should only specify per-module flags ({})c                ,    i | ]\  }}|t           v ||S r;   )r   )r?   kr   s      r2   
<dictcomp>z%parse_config_file.<locals>.<dictcomp>B  s)    WWWDAqqDV?V?V1a?V?V?Vr4      ri   .c              3      K   | ]}|v V  	d S r   r;   )r?   crb   s     r2   rw   z$parse_config_file.<locals>.<genexpr>K  s'      11QqDy111111r4   z?[]!c              3  *   K   | ]}d |v o|d k    V  dS )rP   Nr;   ru   s     r2   rw   z$parse_config_file.<locals>.<genexpr>K  s@       9 9./C1H)c9 9 9 9 9 9r4   ziPatterns must be fully-qualified module names, optionally with '*' in some components (e.g spam.*.eggs.*))1sysr   r   maprV   rT   rX   r   CONFIG_FILEStupleconfigparserRawConfigParserexistsis_tomlopentomllibloadgetdestructure_overridesr   readr   SHARED_CONFIG_FILESconfig_fileTOMLDecodeErrorErrorConfigTOMLValueErrorprintdirnameabspathenvironparse_sectionr   setattrreport_dirsupdate
startswith
get_prefixr+   rJ   rK   rH   r   rC   replacesepaltsepanyper_module_options)r   r   r   r   r   config_filesconfig_files_iterconfig_parserr   f	toml_dataparserconfig_types	file_readerrsectionprefixupdatesr   r   r   nameglobsrb   s                          @r2   parse_config_filer     s:    !szF!szF)1+.rw/A8CX+Y+Y.// 022M#  w~~k** 		{## 0+t,, 0 'QI0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 &MM&"55	**#Yv%67	3H3S3S0"";///&/ h:::vV?S?S#I"+GE ');=QR 	8 	8 	8[))C))777777777	8 	)+9U9U)V)VBJ%&V 	Qy(DDDYBBBPPPP.))),G-wf 
  
 MMOO 	# 	#DAqGQ"""""";/// )? )?g??7## (	?	400F#0!17L&$ $ G[  IPP		!M!M9L9L!M!M!MMM       7||00 XSZZ		&W8J)J"K"KLL       XWGMMOOWWWHEC(( ? ?||BFC009 8<<	377D1111&11111 
?S 9 937::c??9 9 9 6 6 
? J#	     8?G.t44S)? )?sB   E4C	EC	EC	E;?E!F9FFr  r  c                    t          |           r4dd                    |                    d          dd                    z  }n|}|  d| dS )Nzmodule = "%s"-r    z: [z]:)r   rJ   rC   )r  r  module_name_strs      r2   r   r   X  sY    y )CHHTZZ__QRR5H,I,II//O////r4   boolc                P    |                                                      d          S )Nz.toml)lowerendswith)r   s    r2   r   r   a  s     >>$$W---r4   r
  dict[str, Any]c           
        d| d         vr| S t          | d         d         t                    st          d          |                                 }|d         d         D ]}d|vrt          d          t          |d         t                    r
|d         g}n3t          |d         t                    r	|d         }nt          d          |D ]}|                                }|d= d| }||vr|||<   (|                                D ]B\  }}|||         v r(||         |         |k    rt          d| d	| d
          |||         |<   C|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 'rt   )r,   listr   copyr%   r   )	r
  resultoverrider   r  module_overridesold_config_namenew_key	new_values	            r2   r   r   e  s   @ )F+++i'4d;; 
"R
 
 	

 ^^F6N;/ #A #A8##&D  
 hx(#.. 		)*GG*D11 	x(GG&    	A 	AF'}} *.f..Of,,*:''*:*@*@*B*B 
A 
A&GY6/#:::"?3G<	II2b/5b bW^b b b  
 8AF?+G44
A	A& 	v{#Mr4   r  templater  Mapping[str, Any]r  r   (tuple[dict[str, object], dict[str, str]]c                   i }i }ddd}|D ]h}	d}
|	}|	|v r
||	         }n|	|v r*t          |  d|	 d||	          d||	          d|	           Cd
}t          |d          sJ |	dk    rt          ||	d
          }||	                    d          r\|	d
d                             dd          }|t
          j        v rt          ||	                   ||<   nt          |  d|	 |	           |	                    d          rn
|	                    d          r%t          ||	dd
                   r|	dd
         }d}
n|	                    d          rt          |d|	z             rd|	z   }d}
n|	                    d          r%t          ||	dd
                   r|	dd
         }d}
nf|	                    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          |          }d
}	 |t          u rSt          |t                    r#t          |                    |	                    }n|                    |	          }|
r| }nt!          |          ro|
rt          |  d| |	           	  ||                    |	                    }nN# t"          j        $ r#}t          |  |	 d| |	           Y d
}~d
}~ww xY wt          |  d|	 d|	           n0# t&          $ r#}t          |  |	 d| |	           Y d
}~Gd
}~ww xY w|	dk    r|r
 |             c|||<   jd|vrg |d<   d|vrg |d<   ||fS ) 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_codesFzUnrecognized option: z = z (did you mean z?)r   Nnew_semantic_analyzerr   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   hasattrgetattrr  r  r   REPORTER_NAMESr%   r   typer  r,   dictconvert_to_booleanr   
getbooleancallabler&   r'   
ValueError)r  r(  r   r  r  r   resultsr   invalid_optionskeyinvertoptions_keyctdvreport_typer   r  s                    r2   r   r     s     "$G"$K
  3 4 O
  N! N!,c"BBO## ; ; ; ; ; ;"1#"6; ; ;   
 B 8%<=====---XsD11z<<	** "%crc("2"23"<"<K"h&===36ws|3D3DK00HH3HHvVVVV>>$'' _^^E** _wxQRR/I/I _"%abb'K!FF^^G,, _53;1O1O _"'#+K!FF^^J// 	_GHc!""g4N4N 	_"%abb'K!FF^^G,, _7SQRQSQSWCT1U1U _")CG"3K!FFH__VPP#PP'#,PPW]^^^^  ;==BBbB	Tzzgt,, 0*7;;s+;+;<<AA**3//A A"  VQQKQQX^____7;;s++,,AA1   V1S11C11????HHHH GGcGGGfUUUU 	 	 	V)S))C))7777HHHH	 (?? #  """  7**(*$%'))')#$KsC   7BL+=KL+L+L	L+	LL++
M5MM
Any | Nonec                8   t          | t                    r| S t          | t                    st          |           } |                                 t          j        j        vrt          d|            t          j        j        |                                          S )zAReturn a boolean value translating from other types if necessary.zNot a boolean: )r,   r  r%   r  r   r   BOOLEAN_STATESr?  )r   s    r2   r<  r<  '  s    % eS!! E

{{}}L8GGG2522333'6u{{}}EEr4   r   tuple[list[str], list[str]]c                   g }g }g }d}|t          |           k     r)| |         dk    r=|                    d                    |                                                     g }n| |         dk    r|dz  }|t          |           k     rK| |         dk    r?|                    | |                    |dz  }|t          |           k     r| |         dk    ?|t          |           k    r)|                    d           |                                 n|                    | |                    |dz  }|t          |           k     )|r:|                    d                    |                                                     ||fS )zfSplit s on commas, except during quoted sections.

    Returns the parts and a list of error messages.r   ri   r   "r    z+Unterminated quote in configuration comment)lenrd   rJ   r=   clear)r   partscurerrorsis        r2   split_directiverT  2  sn    ECF	A
c!ff**Q43;;LL++--...CCqTS[[FAc!ff**1

1Q4   Q c!ff**1 CFF{{KLLL		JJqt	Q c!ff**  +RWWS\\''))***&=r4   line tuple[dict[str, str], list[str]]c                    i }t          |           \  }}|D ]M}d|vr|}d}n#d |                    dd          D             \  }}|                    dd          }|d}|||<   N||fS )z5Rewrite the mypy comment syntax into ini file syntax.=Nc              3  >   K   | ]}|                                 V  d S r   r<   ru   s     r2   rw   z.mypy_comments_to_config_map.<locals>.<genexpr>X  s*      BB17799BBBBBBr4   r    r  r/  True)rT  rC   r  )rU  r(  r   entriesrR  entryr  r   s           r2   mypy_comments_to_config_mapr]  O  s    G%d++OGV 
 
eDEEBBekk#q.A.ABBBKD%||C%%=EF?r4   argslist[tuple[int, str]]/tuple[dict[str, object], list[tuple[int, str]]]c           	     r   g }i }| D ]*\  }t          j                    }t          ||          \  }}||d<   |                    fd|D                        t	                      }ddfd}	t          d||	|d         t          |          \  }
}|                    fd	|                                                                	                    d
          D                        |r|
                    df           r|
                    df           |                    |
           ,||fS )zParse a collection of inline mypy: configuration comments.

    Returns a dictionary of options to be applied and a list of error messages
    generated.
    dummyc              3      K   | ]}|fV  	d S r   r;   r?   rv   linenos     r2   rw   z&parse_mypy_comments.<locals>.<genexpr>u  s'      88avqk888888r4   Fr   r   c                     d d S )NTr;   )strict_founds   r2   r   z-parse_mypy_comments.<locals>.set_strict_flagsz  s    LLLr4   r   )r   c              3  $   K   | ]
}||fV  d S r   r;   rd  s     r2   rw   z&parse_mypy_comments.<locals>.<genexpr>  s-      VVaTUVvqkVVVVVVr4   
z-Reports not supported in inline configurationzSetting "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]  rc   r   r   r   getvaluer=   rC   rd   r   )r^  r(  rR  sectionsrU  r  r   parse_errorsr   r   new_sectionsreportsre  rg  s               @@r2   parse_mypy_commentsro  b  s    %'FH  &  & -// ;D( K K!w8888<888888	  	  	  	  	  	  !.*F7O=MV\!
 !
 !
g 	VVVV6??+<+<+B+B+D+D+J+J4+P+PVVVVVV 	UMM6#RSTTT 	MMS   	%%%%Vr4   c                    | r|sdS t          |           sd                    d |D                       S dd                    t          |                    z  S )Nr   rG   c              3  "   K   | ]
}d | dV  dS )z[mypy-]Nr;   )r?   r  s     r2   rw   z*get_config_module_names.<locals>.<genexpr>  s.      BB+&+++BBBBBBr4   zmodule = ['%s']z', ')r   rJ   rK   )r   r   s     r2   get_config_module_namesrs    se     7 r8 CyyBB'BBBBBBF7OO < <==r4   c                      e Zd ZdS )r   N)__name__
__module____qualname__r;   r4   r2   r   r     s        Dr4   r   )r   r   r   r   )r5   )r   r6   r7   r%   r   r8   )rE   r8   r   r8   )rN   r8   r   r8   )rT   r%   r   r%   )r   r6   r   r8   )r]   r^   r   r8   )r]   r%   r   r8   )rk   r%   r   r%   )r   r%   r   r8   )NN)r   r   r   r   r   r   r   r   r   r   r   r   )r  r%   r  r%   r   r%   )r   r%   r   r  )r
  r  r   r  )r  r%   r(  r   r   r   r  r)  r  r  r   r   r   r*  )r   rH  r   r  )r   r%   r   rK  )rU  r%   r(  r   r   rV  )r^  r_  r(  r   r   r`  )r   r   r   r8   r   r%   )H
__future__r   r&   r   rb   ra   rV   r#   r   ior   mypy.errorcodesr   version_infor   tomlitypingr   r	   r
   r   r   r   r   r   r   r   r   r   typing_extensionsr   r   r   r   mypy.optionsr   r   r%   r  r(   r-   r   __annotations__r   r3   rD   rM   rS   rY   r\   rg   rj   r|   r   r   r   r!  r   r   r  r   r   r   r   r   r<  rT  r]  ro  rs  r?  r   r;   r4   r2   <module>r     s*   " " " " " " "          				 				 



       ' ' ' ' ' 'wNNNN                            6 5 5 5 5 5       4 4 4 4 4 4 4 4"'sE4S>49eCHoE#      $,SE3F,F#G  G G G G   0" " " " "      8 8 8 8/ / / /   (	8 	8 	8 	8         <m<C< ;< PP	<
 "< {< < &< *< < ==< AA< BB<   <"  !O!O#<$ XX%<& WW'<( CB$$$5< < <     < =M<Q<Q<S<S  S S S S   -MM 	CC 	<<	
 	@@ 	9 	y 		 	 !T!T 	$Y 	DD 	CC 		 	' 	I  	9!  4 ! m? m? m? m? m?`0 0 0 0. . . .P P P Pr Zl  l  l  l  l ^F F F F   :   &. . . .b> > > >	 	 	 	 	: 	 	 	 	 	r4   