+
     h4  c                   sP   R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt	 ]P                  '       d   ^ RIHt ]P                  ! ]4      tRt]P"                  ! R],           R,           ]P$                  ]P&                  ,          4      tR R ltR	t]P"                  ! R
] R2]P&                  4      tR R lt  ^ RIHt R R ltR R lt R R lt!R R lt" ! R R4      t# ^ RI$H%t& R R lt'R R  lt(R! R" lt)R#t*]P"                  ! R
]* R2]P&                  4      t+R$t,]P"                  ! R
], R2]P&                  4      t-R%t.]P"                  ! R
]. R2]P&                  4      t/R& R' lt0R( R) lt1R* R+ lt2R, R- lt3R. R/ lt4R0 R1 lt5R2 R3 lt6R4 R5 lt7R6 R7 lt8R8 R9 lt9R: R; lt: ^ R<IH;t< R= R> lt=R#   ] d    ^ RIHt  ELi ; i  ] d    ]P?                  R4       R R lt EL$i ; i  ] d    ]#! 4       t' ELi ; i  ] d    ]P?                  R?4       R@ RA lt= R# i ; i)Ba@  
The functions in this module are used to validate schemas with the
`format JSON Schema keyword
<https://json-schema.org/understanding-json-schema/reference/string#format>`_.

The correspondence is given by replacing the ``_`` character in the name of the
function with a ``-`` to obtain the format name and vice versa.
N)chain)Literala  
    v?
    (?:
        (?:(?P<epoch>[0-9]+)!)?                           # epoch
        (?P<release>[0-9]+(?:\.[0-9]+)*)                  # release segment
        (?P<pre>                                          # pre-release
            [-_\.]?
            (?P<pre_l>alpha|a|beta|b|preview|pre|c|rc)
            [-_\.]?
            (?P<pre_n>[0-9]+)?
        )?
        (?P<post>                                         # post release
            (?:-(?P<post_n1>[0-9]+))
            |
            (?:
                [-_\.]?
                (?P<post_l>post|rev|r)
                [-_\.]?
                (?P<post_n2>[0-9]+)?
            )
        )?
        (?P<dev>                                          # dev release
            [-_\.]?
            (?P<dev_l>dev)
            [-_\.]?
            (?P<dev_n>[0-9]+)?
        )?
    )
    (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
z^\s*z\s*$c                0    V ^8  d   QhR\         R\        /# )   versionreturnstrboolformat   "R/usr/lib/python3.14/site-packages/setuptools/config/_validate_pyproject/formats.py__annotate__r   <   s     4 4C 4D 4    c                0    \         P                  V 4      RJ# )zhSee :ref:`PyPA's version specification <pypa:version-specifiers>`
(initially introduced in :pep:`440`).
N)VERSION_REGEXmatch)r      &r   pep440r   <   s     w't33r   z'([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])Z^Z$c                r   )r   namer   r   r	   r   r   r   r   J   s     ; ;C ;D ;r   c                r   )zdSee :ref:`PyPA's name specification <pypa:name-format>`
(initially introduced in :pep:`508#names`).
N)PEP508_IDENTIFIER_REGEXr   )r   r   r   pep508_identifierr   J   s     #((.d::r   )requirementsc                r   r   valuer   r   r	   r   r   r   r   Z   s      c d r   c                l     \         P                  ! V 4       R#   \         P                   d     R# i ; i)zkSee :ref:`PyPA's dependency specifiers <pypa:dependency-specifiers>`
(initially introduced in :pep:`508`).
TF)_reqZRequirementZInvalidRequirementr   r   r   pep508r   Z   s0    	U#&& 		    33zCould not find an installation of `packaging`. Requirements, dependencies and versions might not be validated. To enforce validation, please install `packaging`.c                r   r   r   r	   r   r   r   r   k   s      c d r   c                     R # T r   r   r   r   r   k       r   c                r   r   r   r	   r   r   r   r   o   s     ) )c )d )r   c                s   a  \         ;QJ d    V 3R lR 4       F  '       g   K   RM	  RM! V 3R lR 4       4      '       d   R# \        RS  24      # )zExpression that can be used to specify/lock versions (including ranges)
See ``versionspec`` in :ref:`PyPA's dependency specifiers
<pypa:dependency-specifiers>` (initially introduced in :pep:`508`).
c              3   s,   <"   T F	  qS9   x  K  	  R # 5iNr!   ).0Zcr   s   & r   	<genexpr>Z%pep508_versionspec.<locals>.<genexpr>t   s     
/!:s   TFZrequirement)Z;]@)Zanyr   r   s   fr   pep508_versionspecr(   o   s?    
 s
/
/sss
/
///  Kw'((r   c                r   r   r   r	   r   r   r   r      s     ? ?C ?D ?r   c                s    V P                  R4      w  rpR \        VP                  R4      VP                  R4      4       4       p\        ;QJ d    R V 4       F  '       d   K   R# 	  R# ! R V 4       4      # )zSee PyPA's specification for defining build-backend references
introduced in :pep:`517#source-trees`.

This is similar to an entry-point reference (e.g., ``package.module:object``).
:c              3   @   "   T F  qP                  4       x  K  	  R # 5ir#   stripr$   Zi   & r   r%   +pep517_backend_reference.<locals>.<genexpr>   s     P&O7799&O   .c              3   sJ   "   T F  q'       g   K  \        V4      x  K  	  R # 5ir#   python_identifierr-   r.   r   r%   r/      s     >[A# ##[s   	##FT)	partition_chainsplitall)r   module_objidentifierss   &    r   pep517_backend_referencer<      sa     __S)NFsPfV\\#->		#&OPK3>[>33>3>3>[>>>r   c                s$    V ^8  d   QhR\         /# )r   r   )r   r	   r   r   r   r      s     
M 
Ms 
Mr   c                  s<   ^ RI p ^ RIHp ^ RIHp RpV P                  4       pV! W4R7      ;_uu_ 4       pV! 4       pVP                  RR4      VR&   VP                  4       P                  VP                  R	R
4      4      uuRRR4       #   + '       g   i     R# ; i)i    N)Message)urlopenz.https://pypi.org/pypi?:action=list_classifiers)contextzcontent-typez
text/plainZcontent_typeZcharsetzutf-8)
sslZemail.messager=   Zurllib.requestr>   Zcreate_default_contextZ	getheaderZreadZdecodeZ	get_param)r@   r=   r>   urlr?   ZresponseZheaderss          r   _download_classifiersrB      sy    %&
:C((*G		&	&()"*"4"4^\"R}}%%g&7&7	7&KL 
'	&	&	&s   AB

B	c                   sh   a  ] tR t^t o Rt V 3R lR ltV 3R lR ltV 3R lR ltV 3R ltR	t	V t
R
# )_TroveClassifieraW  The ``trove_classifiers`` package is the official way of validating classifiers,
however this package might not be always available.
As a workaround we can still download a list from PyPI.
We also don't want to be over strict about it, so simply skipping silently is an
option (classifiers will be validated anyway during the upload to PyPI).
c                   < V ^8  d   QhRR/# r   r   Nr!   r
   __classdict__   "r   r   _TroveClassifier.__annotate__   s     + +$ +r   c                s0    R V n         RV n        RV n        R # )NFtrove_classifier)
downloaded_skip_download__name__selfr   r   __init__Z_TroveClassifier.__init__   s    #*r   c                rD   rE   r!   rF   rH   r   r   rI      s     # #4 #r   c                s    R V n         R# )TN)rL   rN   r   r   _disable_downloadZ"_TroveClassifier._disable_download   s
    "r   c                s&   < V ^8  d   QhRS[ RS[/# r   r   rF   rH   r   r   rI      s     R Rc Rd Rr   c                sT   V P                   R J g   V P                  RJ d   R# \        P                  ! R4      '       g   \        P                  ! R4      '       d!   R V n         Rp\        P                  V4       R# V P                   f?   Rp\        P                  V4        \        \        4       P                  4       4      V n         WP                   9   ;'       g     VP                  4       P                  R4      #   \         d!    R T n         \        P                  R4        R# i ; i)FTZ
NO_NETWORKZVALIDATE_PYPROJECT_NO_NETWORKzxInstall ``trove-classifiers`` to ensure proper validation. Skipping download of classifiers list from PyPI (NO_NETWORK).zxInstall ``trove-classifiers`` to ensure proper validation. Meanwhile a list of classifiers will be downloaded from PyPI.z*Problem with download, skipping validation
private ::)rK   rL   osZgetenv_loggerZdebugZsetrB   Z
splitlines	Exceptionlower
startswith)rO   r   msgs   && r   __call__Z_TroveClassifier.__call__   s    ??e#t':':d'B99\""bii0O&P&P#DOP  MM#??"P  MM#"%&;&=&H&H&J"K 'QQ5;;=+C+CL+QQ  "'JKs   !&C< <'D'&D'c                st   < V ^8  d   Qh/ S[ P                  RRS[ P                  S[,          3,          ;R&   # )r   NzLiteral[False]rK   )typingZUnionZSetr   rF   rH   r   r   rI      s+      T#3VZZ_DEE r   )rM   rL   rK   N)rM   Z
__module__Z__qualname__Z__firstlineno____doc__rP   rQ   rY   Z__annotate_func__Z__static_attributes__Z__classdictcell__)rG   s   @r   rC   rC      s6     + +
# #R R1  r   rC   )classifiersc                r   r   r   r	   r   r   r   r      s     U U U Ur   c                sb    V \         9   ;'       g     V P                  4       P                  R4      # )z!See https://pypi.org/classifiers/rR   )_trove_classifiersrV   rW   r   r   r   rJ   rJ      s'    **TTekkm.F.F|.TTr   c                r   r   r   r	   r   r   r   r      s     L LC LD Lr   c           	     s    V P                  R4      vrVP                  R4      '       g   R# \        RP                  VR\	        R4      )  .VO4      4      # )zName of a directory containing type stubs.
It must follow the name scheme ``<package>-stubs`` as defined in
:pep:`561#stub-only-packages`.
r1   -stubsFN)r6   endswithpython_module_nameZjoinZlen)r   ZtopZchildren   &  r   pep561_stub_namerb      sP    
 [[%NC<<!!chh,<s8}n(='I'IJKKr   c                r   r   r   r	   r   r   r   r      s      s t r   c                sj   ^ RI Hp  V! V 4      pVP                  '       gY   \        P	                  RV  24       V P                  R4      '       g*   V P                  R4      '       g   RV 9   g   V! RV  24      p\        VP                  ;'       d    VP                  4      #   \         d     R# i ; i)zValid URL (validation uses :obj:`urllib.parse`).
For maximum compatibility please make sure to include a ``scheme`` prefix
in your URL (e.g. ``http://``).
)urlparsezsFor maximum compatibility please make sure to include a `scheme` prefix in your URL (e.g. 'http://'). Given value: Z/Z\r'   zhttp://F)	Zurllib.parserc   ZschemerT   warningrW   r   ZnetlocrU   )r   rc   Zpartsra   r   rA   rA      s    
 &|||OO  %w(
 $$S))U-=-=d-C-Cse| 75'!23ELL11U\\22 s(   B# .B# B# ()B# B# #B21B2z[^\[\s=]([^=]*[^\s=])?z[\w.-]+z\w+(\.\w+)*c                r   r   r   r	   r   r   r   r     s        S  T  r   c                s"    V P                  4       # )zPCan be used as identifier in Python.
(Validation uses :obj:`str.isidentifier`).
)Zisidentifierr   r   r   r3   r3     s     r   c                r   r   r   r	   r   r   r   r     s     ? ?s ?t ?r   c                s   V P                  R4      '       g   V P                  R4      '       d   R# \        ;QJ d+    R V P                  R4       4       F  '       d   K   R# 	  R# ! R V P                  R4       4       4      # )z
Python "dotted identifier", i.e. a sequence of :obj:`python_identifier`
concatenated with ``"."`` (e.g.: ``package.module.submodule``).
r1   Fc              3   8   "   T F  p\        V4      x  K  	  R # 5ir#   r2   )r$   Zmr.   r   r%   Z.python_qualified_identifier.<locals>.<genexpr>  s     >-= ##-=   T)rW   r_   r7   r6   r   r   r   python_qualified_identifierrg     sa    
 s 3 33>U[[-=>33>3>3>U[[-=>>>r   c                r   r   r   r	   r   r   r   r   "  s     . .c .d .r   c                s    \        V 4      # )zkModule name that can be used in an ``import``-statement in Python.
See :obj:`python_qualified_identifier`.
)rg   r   r   r   r`   r`   "  s     'u--r   c                r   r   r   r	   r   r   r   r   )  s     7 7c 7d 7r   c                s    V P                  R4      '       g   V P                  R4      '       d   R# V P                  R4      '       d   R# \        V P                  RR4      4      # )a  Similar to :obj:`python_module_name`, but relaxed to also accept
dash characters (``-``) and cover special cases like ``pip-run``.

It is recommended, however, that beginners avoid dash characters,
as they require advanced knowledge about Python internals.

The following are disallowed:

* names starting/ending in dashes,
* names ending in ``-stubs`` (potentially collide with :obj:`pep561_stub_name`).
Z-Fr^   r9   )rW   r_   r`   Zreplacer   r   r   python_module_name_relaxedrh   )  sN     s 3 3~~hemmC566r   c                r   r   r   r	   r   r   r   r   <  s     ; ;3 ;4 ;r   c                r   )z`See ``Data model > group`` in the :ref:`PyPA's entry-points specification
<pypa:entry-points>`.
N)ENTRYPOINT_GROUP_REGEXr   r   r   r   python_entrypoint_grouprj   <  s     "''.d::r   c                r   r   r   r	   r   r   r   r   C  s     
 
# 
$ 
r   c                s    \         P                  V 4      '       g   R# \        P                  V 4      '       g)   RV  R2pV\        ,          p\        P                  V4       R# )z_See ``Data model > name`` in the :ref:`PyPA's entry-points specification
<pypa:entry-points>`.
FzEntry point `z'` does not follow recommended pattern: T)ENTRYPOINT_REGEXr   RECOMMEDED_ENTRYPOINT_REGEXRECOMMEDED_ENTRYPOINT_PATTERNrT   rd   )r   rX   r.   r   python_entrypoint_namern   C  sR     !!%((&,,U33eW$KL,,r   c                r   r   r   r	   r   r   r   r   P  s     B Bs Bt Br   c                s   V P                  R4      w  rpRV9   d   VP                  R4      w  rBpVP                  4       R,          R8w  d   R# R VP                  \        P                  R,           4      P	                  R4       4       p\
        ;QJ d    R V 4       F  '       d   K   RM	  R	M! R V 4       4      '       g   R# \        P                  R
V  R24       MTpVP	                  R4      pV'       d   \        WtP	                  R4      4      M
\        V4      p\
        ;QJ d    R V 4       F  '       d   K   R# 	  R	# ! R V 4       4      # )zReference to a Python object using in the format::

    importable.module:object.attr

See ``Data model >object reference`` in the :ref:`PyPA's entry-points specification
<pypa:entry-points>`.
r)   Z[r&   Fc              3   r*   r#   r+   )r$   Zxr.   r   r%   .python_entrypoint_reference.<locals>.<genexpr>]  s     X%W''))%Wr0   z[]Z,c              3   re   r#   )r   )r$   Zer.   r   r%   ro   ^  s     8A$Q''rf   TZ`z4` - using extras for entry points is not recommendedr1   c              3   sT   "   T F  p\        VP                  4       4      x  K   	  R # 5ir#   )r3   r,   r-   r.   r   r%   ro   f  s     A[ ++[s   &(i)
r4   r,   stringZ
whitespacer6   r7   rT   rd   r5   Ziter)	r   r8   r9   Zrestr:   Zextras_ZextrasZmodule_partsr;   s	   &        r   python_entrypoint_referencerq   P  s     ooc*OFt
d{..-==?2#%XW]]63D3Dt3K%L%R%RSV%WXs88sss8888!E7"VWX<<$L:>&yy~6DDVK3A[A33A3A3A[AAAr   c                D    V ^8  d   QhR\         P                  R\        /# r   builtinsintr   r	   r   r   r   r   i  s       $ r   c                .    ^ T u;8*  ;'       d    R8  # u # )z/Unsigned 8-bit integer (:math:`0 \leq x < 2^8`)i   r!   r   r   r   uint8rw   i  s    r   c                rr   r   rs   r	   r   r   r   r   n  s      (,, 4 r   c                rv   )z3Unsigned 16-bit integer (:math:`0 \leq x < 2^{16}`)i   r!   r   r   r   uint16rx   n      r   c                rr   r   rs   r	   r   r   r   r   s  s        r   c                rv   )z3Unsigned 64-bit integer (:math:`0 \leq x < 2^{64}`)l            r!   r   r   r   uintrz   s  ry   r   c                rr   r   rs   r	   r   r   r   r   x  s     % %x|| % %r   c                s.    RT u;8*  ;'       d    R8  # u # )z7Signed 64-bit integer (:math:`-2^{63} \leq x < 2^{63}`)l            l         r!   r   r   r   ru   ru   x  s    u$$u$$$$r   )licensesc                r   r   r   r	   r   r   r   r     s      C D r   c                r   )zrSee :ref:`PyPA's License-Expression specification
<pypa:core-metadata-license-expression>` (added in :pep:`639`).
TF)	_licensesZcanonicalize_license_expressionZInvalidLicenseExpressionr   r   r   SPDXr}     s0    	55e<11 		r   zCould not find an up-to-date installation of `packaging`. License expressions might not be validated. To enforce validation, please install `packaging>=24.2`.c                r   r   r   r	   r   r   r   r     s      C D r   c                 r   r    r!   r   r   r   r}   r}     r"   r   )>r[   rt   ZloggingrS   Zrerp   rZ   Z	itertoolsr    r5   ZTYPE_CHECKINGZtyping_extensionsr   Z	getLoggerrM   rT   ZVERSION_PATTERNZcompileZXZIr   r   ZPEP508_IDENTIFIER_PATTERNr   r   Z	packagingr   r   ZImportErrorZsetuptools._vendor.packagingr   rd   r(   r<   rB   rC   Ztrove_classifiersr\   r]   rJ   rb   rA   ZENTRYPOINT_PATTERNrk   rm   rl   ZENTRYPOINT_GROUP_PATTERNri   r3   rg   r`   rh   rj   rn   rq   rw   rx   rz   ru   r{   r|   r}   r!   r   r   <module>r~      s1     	 	   %	)


H
%
> 

7_4w>rttL4 G **q)B(C1%ErttL ;
2*)&?
M2R 2Rj*CUL0 / ::"4!5Q7>  *  jj1-J,K1)MrttT ) a(@'A$CRTTJ  ?.7&;
B2


%
/Y	  
	
 	

   OO	= l  *')*`  OO	C sT   :F5  G	 #G. 'H 5GG	 GG	 	G+*G+.H ?H H%$H%