
    ?e3                         d dl mZ d dlmZ d dlmZ  G d de          Z G d de          Z G d d	e          Z G d
 d          Z	dS )   )UserFileException)OLDEST_SUPPORTED_MINOR)	toml_loadc                   (     e Zd ZdZdd fd
Z xZS )PyProjectExceptionz0 An exception related to a pyproject.toml file. Ndetailc                P    t                                          d||           dS ) Initialise the exception. pyproject.tomlr   Nsuper__init__)selftextr	   	__class__s      2lib/python3.11/site-packages/sipbuild/pyproject.pyr   zPyProjectException.__init__    s+     	)4?????    __name__
__module____qualname____doc__r   __classcell__r   s   @r   r   r      sV        ::'+ @ @ @ @ @ @ @ @ @ @ @r   r   c                   *     e Zd ZdZddd fd
Z xZS )PyProjectOptionExceptionzE An exception related to a specific option of a pyproject.toml file. N)section_namer	   c                    |d}t                                          d                    |||          |           dS )r   Nztool.sip.projectz'{0}.{1}': {2}r   )r   r   format)r   namer   r   r	   r   s        r   r   z!PyProjectOptionException.__init__)   sS     -L)00tTJJ 	 	 	 	 	 	r   r   r   s   @r   r   r   &   sM        OO37           r   r   c                   (     e Zd ZdZdd fd
Z xZS )!PyProjectUndefinedOptionExceptionzK An exception related to an undefined option of a pyproject.toml file.
    Nr   c                P    t                                          |d|           dS )r   zmust be definedr$   Nr   )r   r!   r   r   s      r   r   z*PyProjectUndefinedOptionException.__init__7   s+     	0|LLLLLr   r   r   s   @r   r#   r#   3   s\          .2 M M M M M M M M M M Mr   r#   c                   @    e Zd ZdZd Zd ZdddZed             ZdS )		PyProjectz+ Encapsulate a parsed pyproject.toml file. c                     d| _         	 t          d          | _        dS # t          $ r d| _         Y dS t          $ r}t          |          | _         Y d}~dS d}~ww xY w)z Initialise the object. Nr   z.there is no such file in the current directory)
toml_errorr   
_pyprojectFileNotFoundError	Exceptionstr)r   es     r   r   zPyProject.__init__@   s~     	%'(899DOOO  	O 	O 	ONDOOOO 	% 	% 	%!!ffDOOOOOOO	%s    A	AAAc                 :   | j         rt          dd          S t                      }d}d}d}d}|                     dd                                          D ]\  }}|                                }|dv rt          |t                    st          |d	d
          |dk    rP|                    dd          	                                s%t          dd
                    |          d
          |}na|dk    r|}nX|dk    r|}nO|dk    r|}nFt          |t                    r|n|g}|D ])}	t          |	t                    st          |dd
          *|||<   |t          dd
          |d|d<   |d|d<   |d
                    t                    |d<   |S )z1 Return a dict containing the PEP 566 meta-data. unknownz0.1)r!   versionNztool.sip.metadataTrequired)r!   r1   metadata-versionrequires-pythonzmust be a stringztool.sipr$   r!   -_z '{0}' is an invalid project namer1   r4   r5   z%must be a string or a list of stringsz2.1z>=3.{})r)   dictget_sectionitemslower
isinstancer-   r   replaceisidentifierr    listr#   r   )
r   metadatar!   r1   metadata_versionrequires_pythonmd_namemd_value
value_listvalues
             r   get_metadatazPyProject.get_metadataL   sA    ? 	7Y666666!%!1!12EPT!1!U!U![![!]!] !	) !	)GXmmooG TTT!(C00 527<N)35 5 5 5 f$$#++C55BBDD 96v B I I(0!2 !2-79 9 9 9
 $DD	))&GG 222'/$$ 111&.O *4Hd)C)CSXX(
' 9 9E%eS11 96w G-79 9 9 99
 !)HW<3F!+- - - - ?"'HY#+0H'("*2//*+, +,H&' r   Fr2   c                B   | j         rdS | j        }|                    d          D ]A}	 ||         }# t          $ r) |r"t	          d                    |                    Y  dS w xY w|                     |          s"t	          d                    |                    |S )z* Return a sub-section with a dotted name. N.zthe '[{0}]' section is missingz'{0}' is not a section)r)   r*   splitKeyErrorr   r    _is_section)r   r   r3   sectionparts        r   r9   zPyProject.get_section   s     ? 	4/ &&s++ 		 		D!$-    3,<CC$02 23 3 3 ttt (( 	C$,33LAAC C C s   2.A%$A%c                 :    t          | t          t          f          S )z6 Returns True if a section value is itself a section. )r<   r8   r?   )rF   s    r   rL   zPyProject._is_section   s     %$...r   N)	r   r   r   r   r   rG   r9   staticmethodrL    r   r   r'   r'   =   su        55
% 
% 
%@ @ @D 5:     2 / / \/ / /r   r'   N)

exceptionsr   py_versionsr   tomlr   r   r   r#   r'   rQ   r   r   <module>rU      s
  0 * ) ) ) ) ) / / / / / /      @ @ @ @ @* @ @ @
 
 
 
 
1 
 
 
M M M M M(@ M M Mn/ n/ n/ n/ n/ n/ n/ n/ n/ n/r   