L idZddlmZddlZddlZddlmZddlmZm Z m Z ddl m Z m Z ddlmZddlmZmZmZdd lmZmZeeZe j.d k\rddlZd Zn ed \ZZGd deZe dZGddZy)z*TOML configuration support for coverage.py) annotationsN)Iterable)AnyCallableTypeVar)configenv) ConfigError)import_third_partyisolate_modulesubstitute_variables)TConfigSectionOutTConfigValueOut) ralphaTtomliceZdZdZy)TomlDecodeErrorz>An exception class that exists even when toml isn't installed.N)__name__ __module__ __qualname____doc__Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/coverage/tomlconfig.pyrrsHrrTWantceZdZdZddZddZddZddZddZddZ ddZ dd Z dd Z dd Z dd Z d d ZddZd!dZd"dZd#dZd#dZd$dZd%dZy)&TomlConfigParserz:TOML file reading with the interface of HandyConfigParser.c ||_i|_yN)our_filedata)selfr#s r__init__zTomlConfigParser.__init__-s  $& rcNt|tttjfsJtj |} t |d5}|j}dddtr tj|_ |gStj dtj"}|j$s|rd}t'|j)|gS#1swYxYw#t$rgcYSwxYw#tj$r}tt||d}~wwxYw)Nzutf-8)encodingz^\[tool\.coverage(\.|]))flagsz?Can't read {!r} without TOML support. Install with [toml] extra) isinstancebytesstrosPathLikefspathopenreadOSError has_tomllibtomllibloadsr$TOMLDecodeErrorrresearch MULTILINEr#r format)r% filenamesfilenamefp toml_texterrhas_tomlmsgs rr1zTomlConfigParser.read1s)eS"++%>???99Y' h1 &RGGI  &  9#MM)4 : yy!;Ybll[H}}W!#**X"677I! & & I  ** 9%c#h/S8 9sA C& CC&+C7C#C&& C43C47D$ DD$cdg}|D]?}||z}|jd} |j|d}|ddD]}||}  ||fSy#t$rYNwxYw)aCGet a section from the data. Arguments: section (str): A section name, which can be dotted. Returns: name (str): the actual name of the section that was found, if any, or None. data (str): the dict of data in the section, or None if not found. ztool.coverage..rN)NN)splitr$KeyError)r%sectionprefixesprefix real_sectionpartsr$parts r _get_sectionzTomlConfigParser._get_sectionJs%% F!G+L &&s+E yyq*!!"I&D:D& T!!    s!A  AAc|j|\}}|td||J ||}||fS#t$rtd|d|dwxYw)z;Like .get, but returns the real section name and the value.N No section: z No option z in section: )rMr rF)r%rGoptionnamer$values r_getzTomlConfigParser._getes&&w/ d < WK89 9 VLEU{ V 6*M$JKQU U Vs 3Ac|j||\}}t|trt|tj }||fS)zGet a single-valued option. Performs environment substitution if the value is a string. Other types will be converted later as needed. )rSr*r,r r-environr%rGrPrQrRs r _get_singlezTomlConfigParser._get_singleqs< ii0 e eS !( ;EU{rc8|j|\}}|y||vS)NFrM)r%rGrP_r$s r has_optionzTomlConfigParser.has_option|s(##G,4 <~rc.|j|\}}|Sr"rYr%rGrQrZs rrJzTomlConfigParser.real_sections##G,a rc@|j|\}}t|Sr")rMboolr]s r has_sectionzTomlConfigParser.has_sections ##G,aDzrc||j|\}}|td|t|jS)NrO)rMr listkeysr%rGrZr$s roptionszTomlConfigParser.optionss>##G,4 < WK89 9DIIK  rc6|j|\}}|xsiSr"rYrds r get_sectionzTomlConfigParser.get_sections ##G,4zrrc0|j||\}}|Sr")rWr%rGrPrZrRs rgetzTomlConfigParser.gets##GV45 rc t||r|St|tr | ||Std|d|d|d|#t$r}td|d|d|d||d}~wwxYw)zCheck that `value` has the type we want, converting if needed. Returns the resulting value of the desired type. NzOption []z couldn't convert to z: z is not )r*r, Exception ValueError)r%rGrPrRtype_ converter type_desces r _check_typezTomlConfigParser._check_types eU #L eS !i&;  '' wiq 2eY G    wiq0Ei[PRSXR[\ sA A' A""A'c~|j||\}}ddd}|j|||t|jdS)NTF)truefalsez a boolean)rWrsr_ __getitem__)r%rGrPrQrR bool_stringss r getbooleanzTomlConfigParser.getbooleansD&&w7 e $u5 feT<;S;SU`aarcV|j||\}}tj|Sr")rWrprocess_file_valueris rgetfilezTomlConfigParser.getfiles)##GV45((//rc|j||\}}|j|||tdd}|Dcgc]}t|tj }}||fScc}w)zJGet a list of strings, substituting environment variables in the elements.Nza list)rSrsrbr r-rU)r%rGrPrQvaluesrRs r _get_listzTomlConfigParser._get_lists_yy&1 f!!$dHMGMNe&ubjj9NNV|Os!Ac0|j||\}}|Sr")r)r%rGrPrZr~s rgetlistzTomlConfigParser.getlistsNN7F3 6 rcZ|j||\}}tj|||Sr")rrprocess_regexlist)r%rGrPrQr~s r getregexlistzTomlConfigParser.getregexlists+~~gv6 f''ff==rch|j||\}}|j|||ttdS)Nz an integer)rWrsintrVs rgetintzTomlConfigParser.getints3&&w7 efeS#|LLrc|j||\}}t|tr t|}|j |||ttdS)Nza float)rWr*rfloatrsrVs rgetfloatzTomlConfigParser.getfloatsF&&w7 e eS !%LEfeUE9MMrN)r#r_returnNone)r;z Iterable[str]r list[str])rGr,rz+tuple[str | None, TConfigSectionOut | None])rGr,rPr,rztuple[str, TConfigValueOut])rGr,rPr,rr)rGr,rPr,rr_)rGr,rz str | None)rGr,rr_)rGr,rr)rGr,rr)rGr,rPr,rRrroz type[TWant]rpzCallable[[Any], TWant] | Nonerqr,rr)rGr,rPr,rr,)rGr,rPr,rztuple[str, list[str]])rGr,rPr,rr)rGr,rPr,rr)rGr,rPr,rr)rrrrr&r1rMrSrWr[rJr`rergrjrsryr|rrrrrrrrr r &sD '2"6   !        1     4b 0>MNrr )r __future__rr-r7collections.abcrtypingrrrcoveragerr coverage.exceptionsr coverage.miscr r r coverage.typesrr PYVERSIONr4r3rmrrr rrrrs1" $)) +RR=B==**K.g6G[ i lNlNr