
    zi                    (   d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	m
Z
 ddlmZ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)CallableIterable)AnyTypeVar)config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__     ^/var/www/tmov.alphamb/tmov_inventario/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d0d
Zd1dZd2dZd3dZd4dZ	d5dZ
d6dZd7dZd8dZd3dZd9d#Zd4d$Zd:d%Zd;d'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   r7   zTomlConfigParser.read1   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"sectionr2   +tuple[str | None, TConfigSectionOut | None]c                    dg}| j         r|                    d           |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)r!   appendsplitr'   KeyError)r(   rG   prefixesprefixreal_sectionpartsr'   parts           r   _get_sectionzTomlConfigParser._get_sectionJ   s     %%= 	 OOB 	 	F!G+L &&s++Eyq*!!""I & &D:DD&   E:T!!s   (A((
A54A5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: )rU   r
   rO   )r(   rG   rV   namer'   values         r   _getzTomlConfigParser._getg   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.
        )r\   r0   r2   r   r3   environr(   rG   rV   rZ   r[   s        r   _get_singlezTomlConfigParser._get_singles   sH     ii00eeS!! 	<(
;;EU{r   c                B    |                      |          \  }}|dS ||v S )NFrU   )r(   rG   rV   _r'   s        r   
has_optionzTomlConfigParser.has_option~   s-    ##G,,4<5~r   
str | Nonec                6    |                      |          \  }}|S r&   rb   r(   rG   rZ   rc   s       r   rR   zTomlConfigParser.real_section   s    ##G,,ar   c                P    |                      |          \  }}t          |          S r&   )rU   r"   rg   s       r   has_sectionzTomlConfigParser.has_section   s%    ##G,,aDzzr   c                    |                      |          \  }}|t          d|          t          |                                          S )NrY   )rU   r
   listkeysr(   rG   rc   r'   s       r   optionszTomlConfigParser.options   sK    ##G,,4<8W88999DIIKK   r   r   c                :    |                      |          \  }}|pi S r&   rb   rm   s       r   get_sectionzTomlConfigParser.get_section   s#    ##G,,4zrr   c                8    |                      ||          \  }}|S r&   )r`   r(   rG   rV   rc   r[   s        r   getzTomlConfigParser.get   s     ##GV445r   r[   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: z is not )r0   r2   	Exception
ValueError)r(   rG   rV   r[   rt   rv   rx   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(   rG   rV   rZ   r[   bool_stringss         r   
getbooleanzTomlConfigParser.getboolean   sJ    &&w77e $u55feT<;SU`aaar   c                \    |                      ||          \  }}t          j        |          S r&   )r`   r   process_file_valuerr   s        r   getfilezTomlConfigParser.getfile   s,    ##GV445(///r   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   r3   r^   ).0r[   s     r   
<listcomp>z.TomlConfigParser._get_list.<locals>.<listcomp>   s%    NNNe&ubj99NNNr   )r\   r~   rk   r(   rG   rV   rZ   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(   rG   rV   rc   r   s        r   getlistzTomlConfigParser.getlist   s    NN7F33	6r   c                `    |                      ||          \  }}t          j        |||          S r&   )r   r   process_regexlistr   s        r   getregexlistzTomlConfigParser.getregexlist   s.    ~~gv66f'ff===r   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`   r0   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,   )rG   r2   r#   rH   )rG   r2   rV   r2   r#   rW   )rG   r2   rV   r2   r#   r   )rG   r2   rV   r2   r#   r"   )rG   r2   r#   re   )rG   r2   r#   r"   )rG   r2   r#   r,   )rG   r2   r#   r   )rG   r2   rV   r2   r[   r   rt   ru   rv   rw   rx   r2   r#   r   )rG   r2   rV   r2   r#   r2   )rG   r2   rV   r2   r#   r   )rG   r2   rV   r2   r#   r,   )rG   r2   rV   r2   r#   r   )rG   r2   rV   r2   r#   r   )r   r   r   r   r)   r7   rU   r\   r`   rd   rR   ri   rn   rp   rs   r~   r   r   r   r   r   r   r   r   r   r   r    r    &   s       DD' ' ' '   2" " " ":
 
 
 
	 	 	 	         ! ! ! !      
 
 
 
4b b b b
0 0 0 0      > > > >M M M MN N N N N Nr   r    )r   
__future__r   r3   r=   collections.abcr   r   typingr   r   coverager   r	   coverage.exceptionsr
   coverage.miscr   r   r   coverage.typesr   r   	PYVERSIONr:   r9   r{   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   