Ë 1°.ð‹|Òãó˜—ddlmZmZddlmZddlmZGd„de«ZGd„de«ZGd„d e«Z Gd „d e«Z Gd „d «Z y)é)Ú deprecatedÚUserFileException)ÚOLDEST_SUPPORTED_MINOR)Ú toml_loadscó(‡—eZdZdZddœˆfd„ ZˆxZS)ÚPyProjectExceptionz0 An exception related to a pyproject.toml file. N©Údetailcó*•—t‰|�d||¬«y)ú Initialise the exception. úpyproject.tomlr N©ÚsuperÚ__init__)ÚselfÚtextr Ú __class__s €ú7/usr/lib/python3.12/site-packages/sipbuild/pyproject.pyrzPyProjectException.__init__sø€ô ‰ÑÐ)¨4¸ÐÕ?ó©Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚ __classcell__©rs@rrr sø„Ù:à'+÷@ò@rrcó*‡—eZdZdZdddœˆfd„ ZˆxZS)ÚPyProjectOptionExceptionzE An exception related to a specific option of a pyproject.toml file. N)Ú section_namer cóR•—|€d}t‰|�dj|||«|¬«y)r Nztool.sip.projectz'{0}.{1}': {2}r )rrÚformat)rÚnamerrr rs €rrz!PyProjectOptionException.__init__s7ø€ð Ð Ø-ˆLä ‰ÑÐ)×0Ñ0°¸tÀTÓJØð õ rrrs@rrrsø„ÙOà37À÷òrrcó(‡—eZdZdZddœˆfd„ ZˆxZS)ÚPyProjectTypeOptionExceptionzL An exception related to a badly typed option of a pyproject.toml file. N©rcó0•—t‰|�|d|z|¬«y)r zvalue must be r%Nr)rr"Útypesrrs €rrz%PyProjectTypeOptionException.__init__%s$ø€ô ‰Ñ˜Ð/°%Ñ7Ø)ð õ +rrrs@rr$r$!sø„ñð59÷+ò+rr$có(‡—eZdZdZddœˆfd„ ZˆxZS)Ú!PyProjectUndefinedOptionExceptionzK An exception related to an undefined option of a pyproject.toml file. Nr%có*•—t‰|�|d|¬«y)r zmust be definedr%Nr)rr"rrs €rrz*PyProjectUndefinedOptionException.__init__0sø€ô ‰Ñ˜Ð0¸|ÐÕLrrrs@rr)r),sø„ñð.2÷MòMrr)cóÔ—eZdZdZddddddœZd„Zd „Zd d œd „Zd „Zd„Z e d„«Z e d„«Z e d„«Ze d„«Ze d„«Ze d„«Ze d„«Ze d„«Ze d„«Zy)Ú PyProjectz+ Encapsulate a parsed pyproject.toml file. r"ÚversionÚsummaryúrequires-pythonÚ classifier)r"r-Ú descriptionr/Ú classifierscóX— tdd¬«5}|j«|_ddd«t|j«|_y#1swYŒ$xYw#t $r d|_Yyt $r}tdt|«¬«‚d}~wt$r}tt|««‚d}~wwxYw)z Initialise the object. r úUTF-8©ÚencodingNzis not a UTF-8 encoded file)Údetails) ÚopenÚreadÚ _raw_tomlrÚ pyprojectÚFileNotFoundErrorÚUnicodeDecodeErrorrÚstrÚ Exception)rÚfÚes rrzPyProject.__init__Bs’€ð -ÜÐ&°Õ9¸QØ!"§¡£�”÷:ô(¨¯©Ó7ˆD�N÷:Ð9ûô !ò "à!ˆDŽNä!ò $Ü$Ð%BÜ ›Fô$ð $ûôò -ä$¤S¨£VÓ,Ð ,ûð -ús?‚ A�A¥"AÁAÁ AÁB)Á&B)Á.B B)ÂB$Â$B)có8—|j€ tdd¬«S|jd«}|€|j«}�n6ddi}|j «D�] \}}|j «}|dk(r|j ||«Œ/|dk(r|j||«ŒG|d k(r|j|d |«Œ`|d k(r|j|d |«Œy|d k(r|j||«Œ‘|dk(r|j||«Œ©|dk(r|j||«ŒÁ|dk(r|j||«ŒÙ|dvrŒÞ|jj|«}|€t|dd¬«‚|||<�Œd|vr t!dd¬«‚d|vrd|d<d|vrdj#t$«|d<|S)z0 Return a dict containing the PEP 566 metadata. Úunknownz0.1)r"r-Úprojectúmetadata-versionú2.1ÚreadmeÚlicenseÚauthorsÚauthorÚ maintainersÚ maintainerÚkeywordsÚurlsÚ dependenciesúoptional-dependencies)Úscriptsz gui-scriptsz entry-pointszis an unsupported project keyr%r"r-r/z>=3.{})r;ÚdictÚ get_sectionÚ_get_legacy_metadataÚitemsÚlowerÚ_handle_readmeÚ_handle_licenseÚ_handle_peopleÚ_handle_keywordsÚ _handle_urlsÚ_handle_dependenciesÚ_handle_optional_dependenciesÚ_PEP621_CORE_MAPÚgetrr)r!r)rÚmetadataÚ core_metadataÚmd_nameÚmd_valueÚ core_names rÚ get_metadatazPyProject.get_metadataWsØ€ð �>‰>Ð !ä˜Y°Ô6Ð 6ð×#Ñ# IÓ.ˆØ Ð Ø ×5Ñ5Ó7ŠMð0°Ð7ˆMà%-§^¡^×%5Ñ!�˜Ø!Ÿ-™-›/�ð˜hÒ&Ø×'Ñ'¨°-Õ@Ø  Ò)Ø×(Ñ(¨°=ÕAØ  Ò)Ø×'Ñ'¨°(¸MÕJØ  Ò-Ø×'Ñ'¨°,À ÕNØ  Ò*Ø×)Ñ)¨(°MÕBØ Ò&Ø×%Ñ% h° Õ>Ø Ò.Ø×-Ñ-¨h¸ ÕFØÐ 7Ò7Ø×6Ñ6°xÀÕOØÐ JÑJðà $× 5Ñ 5× 9Ñ 9¸'Ó B�IØ Ð(Ü6°wØ ?Ø-6ô8ð8ð08�M )Ó,ð?&6ðD˜]Ñ*Ü7¸Ø%.ô0ð0ð ˜MÑ )Ø',ˆM˜)Ñ $à  MÑ 1à/7¯©Ü*ó0,ˆMÐ+Ñ ,ðÐrF©Úrequiredcó—|j€y|j}|jd«D]} ||}Œ |j |«stdj |««‚|S#t$r |rtdj |««‚YywxYw)z* Return a sub-section with a dotted name. NÚ.zthe '[{0}]' section is missingz'{0}' is not a section)r;ÚsplitÚKeyErrorrr!Ú _is_section)rrrgÚsectionÚparts rrSzPyProject.get_section˜s¨€ð �>‰>Ð !Øà—.‘.ˆà ×&Ñ& sÖ+ˆDð Ø! $™-‘ð,ð×Ñ Ô(Ü$Ø,×3Ñ3°LÓAóCð Cðˆøôò ÙÜ,Ø<×CÑCØ$0ó2ó3ð3òð  ús¯A#Á#%B  B cóz—|jd«}|€ td«‚tddd|¬«t«}d}d}d}|j dd ¬ «j «D]Ã\}}|j «}|d vrkt|t«st|d d ¬«‚|dk(r@|jdd«j«stddj|«d ¬«‚|}nB|dk(r=|}n:t|t«r|n|g}|D] } t| t«rŒt|dd ¬«‚|||<ŒÅ|€ tdd ¬«‚|€d|d<|S)z" Return the pre-PEP 621 metadata. z[tool.sip.metadata]Nz"the '[project]' section is missingz;using '[tool.sip.metadata]' to specify the project metadataz '[project]'r )ÚinsteadÚfilenameÚline_nrztool.sip.metadataTrf)r"rEza stringztool.sipr%r"Ú-Ú_z '{0}' is an invalid project namerEza string or a list of stringsrF)Ú _get_line_nrrrrRrSrUrVÚ isinstancer>r$ÚreplaceÚ isidentifierrr!Úlistr)) rrrrar"r-Úcore_metadata_versionrbrcÚ value_listÚvalues rrTzPyProject._get_legacy_metadata±s‰€ð×#Ñ#Ð$9Ó:ˆà ˆ?ä$Ð%IÓJÐ JäØMØ%Ð0@Øõ !ô ›ˆ ØˆØˆØ $Ðà!%×!1Ñ!1Ð2EÐPTÐ!1Ó!U×![Ñ![Ö!]Ñ ˆG�XØ—m‘m“oˆGðÐ6Ñ6Ü! (¬CÔ0Ü6°wÀ Ø)3ô5ð5ð˜fÒ$Ø#×+Ñ+¨C°Ó5×BÑBÔDÜ6°vØ B× IÑ IØ(0ó!2à-7ô9ð9ð $‘DØÐ 2Ò2Ø,4Ñ)ô*4°H¼dÔ)C™XÈ(È� ã'�EÜ% e¬SÕ1Ü:¸7Ø ?Ø-7ô9ð9ð(ð &.ˆM˜'Ò "ð;"^ð> ˆ<Ü3°FØ!+ô-ð -ð !Ð (à05ˆMÐ,Ñ -àÐrcó¶—t|jjd««D]2\}}|j«}|j d«rŒ(||vsŒ-|dzcSy)z] Return the number of the line in pyproject.toml containing a target string. Ú Ú#rN)Ú enumerater:rjÚstripÚ startswith)rÚtargetrrÚlines rruzPyProject._get_line_nrísY€ô ' t§~¡~×';Ñ';¸DÓ'AÖB‰MˆG�TØ—:‘:“<ˆDð�‰˜sÔ#Øà˜Š~Ø ‘{Ò"ðCðrcód—t|t«stddd¬«‚|j||«y)z Handle the 'dependencies' key. rOúan array of stringsrDr%N)rvryr$Ú_update_requires_dist)Úclsr|ras rr\zPyProject._handle_dependenciesÿs6€ô˜%¤Ô&Ü.¨~Ø)¸ ôCð Cð ×!Ñ! %¨Õ7rcóh—t|t«stddd¬«‚dj|«|d<y)z Handle the 'keywords' key. rMr†rDr%ú, N)rvryr$Újoin)r|ras rrZzPyProject._handle_keywords s9€ô˜%¤Ô&Ü.¨zØ)¸ ôCð Cð%)§I¡I¨eÓ$4ˆ �jÒ!rcóx—t|t«stddd¬«‚|jd«}|jd«}|�|�Ft ddd¬«‚|�( t |d ¬ «5}|j «}ddd«nt ddd¬«‚||d<y#1swYŒxYw#t$rt dd |›d �d ¬«‚wxYw)z Handle the 'license' key. rHúa tablerDr%rÚfileNú*'file' and 'text' cannot both be specifiedr4r5zunable to read 'Ú'zproject.licenserGú)either 'file' or 'text' must be specified)rvrRr$r_rr8r9r<)r|rarrŽr@s rrXzPyProject._handle_licensesã€ô˜%¤Ô&Ü.¨y¸)Ø!*ô,ð ,ð�y‰y˜Ó ˆØ�y‰y˜Ó ˆà Ð ØÐÜ.¨yØDØ%.ô0ð0ðÐ ð 8ܘ$¨Õ1°QØŸ6™6›8�D÷2øô+¨8Ø?Ø!*ô,ð ,ð$(ˆ �iÒ ÷2Ð1ûä$ò 8Ü.¨vØ*¨4¨&°Ð2Ø%6ô8ð8ð 8ús$Á BÁ#BÁ4BÂBÂBÂB9có@—t|t«stddd¬«‚g}g}|j«D]R\}}t|t«st ddd¬«‚|j |«|D]}|j |›d|›d�«ŒŒT||d<|j||«y ) z) Handle the 'optional-dependencies' key. rPr�rDr%z*each table value must be a list of stringsÚ[Ú]zprovides-extraN)rvrRr$rUryrÚappendr‡)rˆr|raÚprovides_extraÚ requires_distÚextraÚ extra_depsÚdeps rr]z'PyProject._handle_optional_dependencies2s¸€ô˜%¤Ô&Ü.Ð/FبIô7ð 7ðˆØˆ à!&§¡¦Ñ ˆE�:ܘj¬$Ô/Ü.Ð/FØDØ%.ô0ð0ð × !Ñ ! %Ô (ã!�ð×$Ñ$¨ u¨A¨e¨W°AÐ%6Õ7ñ"ð"/ð+9ˆ Ð&Ñ'Ø ×!Ñ! %¨Õ7rcób—|dz}t|t«st|dd¬«‚g}g}|D]Ó}t|t«st|dd¬«‚|j d«}|j d«}|€|€t |dd¬«‚|�t|t «st |d d¬«‚|�t|t «st |d d¬«‚|�,|�|j|›d |›d �«Œ±|j|«ŒÃ|j|«ŒÕ|rd j|«||<|rd j|«||dz<yy)z! Handle the people-related keys. Úszan array of tablesrDr%r"ÚemailNz-each table must contain 'name' and/or 'email'z'name' must be a stringz'email' must be a stringz <Ú>rŠz-email) rvryr$rRr_rr>r•r‹) r|ÚroleraÚkeyÚ all_namesÚ all_emailsÚtabler"r�s rrYzPyProject._handle_peopleMse€ð�S‰jˆä˜%¤Ô&Ü.¨sÐ4HØ!*ô,ð ,ðˆ Øˆ ãˆEܘe¤TÔ*Ü2°3Ð8LØ%.ô0ð0ð—9‘9˜VÓ$ˆDØ—I‘I˜gÓ&ˆEàˆ|   Ü.¨sØGØ%.ô0ð0ðЬ °4¼Ô(=Ü.¨sÐ4MØ%.ô0ð0ðÐ ¬°E¼3Ô)?Ü.¨sÐ4NØ%.ô0ð0ðÐ ØÐ#Ø×%Ñ%¨¨¨b°°°qÐ&9Õ:à×%Ñ% eÕ,à× Ñ  Õ&ð7ñ: Ø"&§)¡)¨IÓ"6ˆM˜$Ñ á Ø-1¯Y©Y°zÓ-BˆM˜$ ™/Ò *ð rcóð—t|t«rM|j«}|jd«rd}n&|jd«rd}nt dd|›d�d¬ «‚|}nŒt|t «rn|j d «}|€ td d ¬ «‚|j d «}|j d«}|�|�t ddd¬ «‚t|d<n|€t ddd¬ «‚tddd¬ «‚||d<|�||d<y y )z Handle the 'readme' key. z.mdz text/markdownz.rstz text/x-rstrGr�z' has an unsupported file typerDr%z content-typeNzproject.readmerrŽr�r1r‘za string or a tablezdescription-content-typezdescription-file) rvr>rVÚendswithrrRr_r)rr$)r|rarGÚ content_typeÚdescription_fileÚdescription_texts rrWzPyProject._handle_readme}s5€ô �eœSÔ !Ø—[‘[“]ˆFà�‰˜uÔ%Ø.‘ Ø—‘ Ô(Ø+‘ ä.¨xؘE˜7Ð"@ÐAØ%.ô0ð0ð %Ñ ä ˜œtÔ $Ø Ÿ9™9 ^Ó4ˆLØÐ#Ü7¸Ø%5ô7ð7ð %Ÿy™y¨Ó0Ð Ø$Ÿy™y¨Ó0Ð àÐ+Ø#Ð/Ü2°8ØHØ)2ô4ð4ô04� ˜mÒ,Ø!Ð)Ü.¨xØCØ%.ô0ð0ô /¨xÐ9NØ!*ô,ð ,ð5Aˆ Ð0Ñ1à Ð 'à0@ˆMÐ,Ò -ð (rcóª—t|t«sttdd¬«‚|j «D��cgc] \}}|›d|›�‘Œc}}|d<ycc}}w)z Handle the 'urls' key. r�rDr%rŠz project-urlN)rvrRr$r rU)r|raÚlabelÚurls rr[zPyProject._handle_urls®sW€ô˜%¤Ô&Ü.¬s°IØ!*ô,ð ,ðMRÏKÉKÌMÔ'ZÉM¹j¸eÀS¨5¨'°°C°5Ò(9ÈMÒ'Zˆ �mÒ$ùÓ'Zs¶Acó.—t|ttf«S)z6 Returns True if a section value is itself a section. )rvrRry)r|s rrlzPyProject._is_section¸s€ô˜%¤$¬ Ó.Ð.rcó^— |d}|j|«||d<y#t$rg}YŒ$wxYw)z. Update 'requires-dist' in the core metadata. z requires-distN)rkÚextend)r|rar—s rr‡zPyProject._update_requires_dist¾sA€ð Ø)¨/Ñ:ˆMð ×јUÔ#Ø)6ˆ �oÒ&øô ò ØŠMð ús ‚ž ,«,N)rrrrr^rrerSrTruÚ classmethodr\Ú staticmethodrZrXr]rYrWr[rlr‡©rrr,r,6sú„Ù5ðØØ Ø,Ø#ñ Ðò-ò*?ðB5:ôò2:òxð$ñ8óð8ðñ5óð5ðñ(óð(ð<ñ8óð8ð4ñ-Cóð-Cð^ñ.Aóð.Að`ñ[óð[ðñ/óð/ð ñ 7óñ 7rr,N) Ú exceptionsrrÚ py_versionsrÚtomlrrrr$r)r,r±rrÚrµsTð÷ 6Ý/Ýô@Ð*ô@ô Ð1ô ô+Ð#;ô+ôMÐ(@ôM÷R7òR7r