j7igddlmZddlmZddlmZdZGddeZdd d ed ed e d e de eeeeeffee eedzfe fff dZ dddd ede ed e d e de ef dZd edede d e d e de edzedzff dZdede fdZy))Mapping) NamedTuple) ParseErrorz#;cHeZdZUeed<edzed<edzed<edzed<y) ParsedLinelinenoNsectionnamevalue)__name__ __module__ __qualname__int__annotations__strY/mnt/ssd/data/python-lab/ChefSystem/venv/lib/python3.12/site-packages/iniconfig/_parse.pyrr s% K 4Z * :rrF)strip_section_whitespacepathdatastrip_inline_commentsrreturnNct||jd||}i}i}|D]\\}}} } | t||d|||| f<| ||vrt||d|i||<:| ||vrt||d| | J| ||| <^||fS)aOParse INI data and return sections and sources mappings. Args: path: Path for error messages data: INI content as string strip_inline_comments: Whether to strip inline comments from values strip_section_whitespace: Whether to strip whitespace from section and key names (default: False). When True, addresses issue #4 by stripping Unicode whitespace. Returns: Tuple of (sections_data, sources) where: - sections_data: mapping of section -> {name -> value} - sources: mapping of (section, name) -> line number Trrzno section header definedzduplicate section zduplicate name ) parse_lines splitlinesr) rrrrtokenssources sections_datar r r r s rparse_ini_datar"s*  3!9 F24G/1M(. 1$u ?T6+FG G!'  <-' v1CG;/OPP%'M' "}W-- v/IJJ$ $$+0M' "4 ( 1 ' !!rr line_iterc  g}d}t|D]\}}t|||||\}} | | |jt|||| :|1| /|s t ||d|}|jt||ddm|p| s|s t ||d|j } | j t ||d| jr"| j| jd| } n| j| } |j| |S)Nzempty section namezunexpected value continuation )r ) enumerate _parselineappendrrpopr r _replace) rr#rrresultr r liner rlasts rrr@s) "FG!),  $ 57O d   0 MM*VWdDA B  $, v/CDDG MM*VWdDA B \d. v/NOO::rHs4#" &+ -" -" -" -" # -"  73S)) *GE#sTz/4JC4O,P PQ -"h#(%* # #Cy# # # #  * #L8 8 8 8 8 # 8  3:sTz !" 8vr