
    L-Ph                    $   d Z ddlmZ ddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZmZmZ dd	lmZmZ  ee          Zej        d
k    rddlZdZn ed          \  ZZ G d de          Z ed          Z G d d          ZdS )z*TOML configuration support for coverage.py    )annotationsN)AnyCallableTypeVar)Iterable)env)ConfigError)import_third_partyisolate_modulesubstitute_variables)TConfigSectionOutTConfigValueOut)      r   alpha   Ttomlic                      e Zd ZdZdS )TomlDecodeErrorz>An exception class that exists even when toml isn't installed.N)__name__
__module____qualname____doc__     S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/coverage/tomlconfig.pyr   r      s        HHDr   r   TWantc                      e Zd ZdZd.dZd/d
Zd0dZd1dZd2dZd3dZ	d4dZ
d5dZd6dZd7dZd2dZd8d#Zd3d$Zd9d&Zd:d'Zd:d(Zd;d*Zd<d,Zd-S )=TomlConfigParserz:TOML file reading with the interface of HandyConfigParser.our_fileboolreturnNonec                "    || _         i | _        d S N)r    data)selfr    s     r   __init__zTomlConfigParser.__init__+   s     $&			r   	filenamesIterable[str]	list[str]c                p   t          |t          t          t          j        f          sJ t          j        |          }	 t          |d          5 }|                                }d d d            n# 1 swxY w Y   n# t          $ r g cY S w xY wt          rR	 t          j        |          | _        n4# t          j        $ r"}t          t          |                    |d }~ww xY w|gS t          j        d|t          j                  }| j        s|r$d}t'          |                    |                    g S )Nzutf-8)encodingz^\[tool\.coverage(\.|]))flagsz?Can't read {!r} without TOML support. Install with [toml] extra)
isinstancebytesstrosPathLikefspathopenreadOSErrorhas_tomllibtomllibloadsr&   TOMLDecodeErrorr   research	MULTILINEr    r	   format)r'   r)   filenamefp	toml_texterrhas_tomlmsgs           r   r6   zTomlConfigParser.read/   s|    )eS"+%>?????9Y''	h111 &RGGII	& & & & & & & & & & & & & & & 	 	 	III	 	9#M)44		* 9 9 9%c#hh//S89:y!;Ybl[[[H} 8 8W!#**X"6"6777IsM   A= A1%A= 1A55A= 8A59A= =BBB1 1C" CC"sectionr1   +tuple[str | None, TConfigSectionOut | None]c                    dg}|D ]W}||z   }|                     d          }	 | j        |d                  }|dd         D ]
}||         }n# t          $ r Y Rw xY w ndS ||fS )aC  Get 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.

        ztool.coverage..r      N)NN)splitr&   KeyError)r'   rF   prefixesprefixreal_sectionpartsr&   parts           r   _get_sectionzTomlConfigParser._get_sectionH   s     %% 	 	F!G+L &&s++Eyq*!!""I & &D:DD&   E:T!!s   (A
AAoptiontuple[str, TConfigValueOut]c                    |                      |          \  }}|t          d|          |J 	 ||         }n$# t          $ r t          d|d|          dw xY w||fS )z;Like .get, but returns the real section name and the value.NNo section: z
No option z in section: )rR   r	   rL   )r'   rF   rS   namer&   values         r   _getzTomlConfigParser._getc   s    &&w//
d<8W88999	VLEE 	V 	V 	VJ6JJ$JJKKQUU	VU{s	   ; !Ar   c                    |                      ||          \  }}t          |t                    rt          |t          j                  }||fS )zGet a single-valued option.

        Performs environment substitution if the value is a string. Other types
        will be converted later as needed.
        )rY   r/   r1   r   r2   environr'   rF   rS   rW   rX   s        r   _get_singlezTomlConfigParser._get_singleo   sH     ii00eeS!! 	<(
;;EU{r   c                B    |                      |          \  }}|dS ||v S )NFrR   )r'   rF   rS   _r&   s        r   
has_optionzTomlConfigParser.has_optionz   s-    ##G,,4<5~r   
str | Nonec                6    |                      |          \  }}|S r%   r_   r'   rF   rW   r`   s       r   rO   zTomlConfigParser.real_section   s    ##G,,ar   c                P    |                      |          \  }}t          |          S r%   )rR   r!   rd   s       r   has_sectionzTomlConfigParser.has_section   s%    ##G,,aDzzr   c                    |                      |          \  }}|t          d|          t          |                                          S )NrV   )rR   r	   listkeysr'   rF   r`   r&   s       r   optionszTomlConfigParser.options   sK    ##G,,4<8W88999DIIKK   r   r   c                :    |                      |          \  }}|pi S r%   r_   rj   s       r   get_sectionzTomlConfigParser.get_section   s#    ##G,,4zrr   c                8    |                      ||          \  }}|S r%   )r]   )r'   rF   rS   r`   rX   s        r   getzTomlConfigParser.get   s     ##GV445r   rX   type_type[TWant]	converterCallable[[Any], TWant] | None	type_descr   c                    t          ||          r|S t          |t                    r<|:	  ||          S # t          $ r!}t          d| d| d| d|          |d}~ww xY wt          d| d| d| d|          )zCheck that `value` has the type we want, converting if needed.

        Returns the resulting value of the desired type.
        NzOption []z couldn't convert to : z is not )r/   r1   	Exception
ValueError)r'   rF   rS   rX   rp   rr   rt   es           r   _check_typezTomlConfigParser._check_type   s     eU## 	LeS!! 	i&; y'''    \w\\\\i\\SX\\  GwGGGGGGeGG
 
 	
s   
6 
A! AA!c                    |                      ||          \  }}ddd}|                     |||t          |j        d          S )NTF)truefalsez	a boolean)r]   r{   r!   __getitem__)r'   rF   rS   rW   rX   bool_stringss         r   
getbooleanzTomlConfigParser.getboolean   sJ    &&w77e $u55feT<;SU`aaar   tuple[str, list[str]]c                    |                      ||          \  }}|                     |||t          dd          }d |D             }||fS )zJGet a list of strings, substituting environment variables in the elements.Nza listc                B    g | ]}t          |t          j                  S r   )r   r2   r[   ).0rX   s     r   
<listcomp>z.TomlConfigParser._get_list.<locals>.<listcomp>   s%    NNNe&ubj99NNNr   )rY   r{   rh   )r'   rF   rS   rW   valuess        r   	_get_listzTomlConfigParser._get_list   sS    yy&11f!!$dHMMNNvNNNV|r   c                8    |                      ||          \  }}|S r%   )r   )r'   rF   rS   r`   r   s        r   getlistzTomlConfigParser.getlist   s    NN7F33	6r   c                    |                      ||          \  }}|D ]^}|                                }	 t          j        |           ,# t          j        $ r!}t          d| d| d|d|           |d }~ww xY w|S )Nz	Invalid [z].z value rw   )r   stripr<   compileerrorr	   )r'   rF   rS   rW   r   rX   rz   s          r   getregexlistzTomlConfigParser.getregexlist   s    ~~gv66f 	\ 	\EKKMME\
5!!!!8 \ \ \!"Sd"S"Sf"S"SU"S"SPQ"S"STTZ[[\s   AA8A33A8intc                |    |                      ||          \  }}|                     |||t          t          d          S )Nz
an integer)r]   r{   r   r\   s        r   getintzTomlConfigParser.getint   s9    &&w77efeS#|LLLr   floatc                    |                      ||          \  }}t          |t                    rt          |          }|                     |||t          t          d          S )Nza float)r]   r/   r   r   r{   r\   s        r   getfloatzTomlConfigParser.getfloat   sV    &&w77eeS!! 	!%LLEfeUE9MMMr   N)r    r!   r"   r#   )r)   r*   r"   r+   )rF   r1   r"   rG   )rF   r1   rS   r1   r"   rT   )rF   r1   rS   r1   r"   r   )rF   r1   rS   r1   r"   r!   )rF   r1   r"   rb   )rF   r1   r"   r!   )rF   r1   r"   r+   )rF   r1   r"   r   )rF   r1   rS   r1   rX   r   rp   rq   rr   rs   rt   r1   r"   r   )rF   r1   rS   r1   r"   r   )rF   r1   rS   r1   r"   r+   )rF   r1   rS   r1   r"   r   )rF   r1   rS   r1   r"   r   )r   r   r   r   r(   r6   rR   rY   r]   ra   rO   rf   rk   rm   ro   r{   r   r   r   r   r   r   r   r   r   r   r   $   s       DD' ' ' '   2" " " "6
 
 
 
	 	 	 	         ! ! ! !      
 
 
 
4b b b b
         M M M MN N N N N Nr   r   )r   
__future__r   r2   r<   typingr   r   r   collections.abcr   coverager   coverage.exceptionsr	   coverage.miscr
   r   r   coverage.typesr   r   	PYVERSIONr9   r8   rx   r   r   r   r   r   r   <module>r      s   1 0 " " " " " " 				 				 ) ) ) ) ) ) ) ) ) ) $ $ $ $ $ $       + + + + + + R R R R R R R R R R = = = = = = = =^B=***NNNKK .-g66G[	 	 	 	 	i 	 	 	
 	nN nN nN nN nN nN nN nN nN nNr   