+
    =i<                       R t ^ RIH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t^ 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      t0R&t1]P(                  ! R]1 R2]P,                  4      t2R' R( lt3R) R* lt4R+ R, lt5R- R. lt6R/ R0 lt7R1 R2 lt8R3 R4 lt9R5 R6 lt:R7 R8 lt;R9 R: lt<R; R< lt=R= R> lt>R? R@ lt?RA RB lt@RC RD ltARE RF ltBRG RH ltC ^ RIIHDtE RJ RK ltF]P(                  ! RO]P*                  4      tGRP RQ ltHR#   ] d    ^ RI Ht  ELLi ; i  ] d    ]PE                  R4       R R lt! ELki ; i  ] d    ]&! 4       t* ELWi ; i  ] d    ]PE                  RL4       RM RN ltF Li ; i)Ra@  
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.
)annotationsN)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                    V ^8  d   QhRRRR/# )   versionstrreturnbool )formats   "Mlib/python3.14/site-packages/setuptools/config/_validate_pyproject/formats.py__annotate__r   B   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   s   &r   pep440r   B   s     w't33r   z'([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])^$c                    V ^8  d   QhRRRR/# )r   namer   r	   r
   r   )r   s   "r   r   r   P   s     ; ;C ;D ;r   c                0    \         P                  V 4      RJ# )zdSee :ref:`PyPA's name specification <pypa:name-format>`
(initially introduced in :pep:`508#names`).
N)PEP508_IDENTIFIER_REGEXr   )r   s   &r   pep508_identifierr   P   s     #((.d::r   )requirementsc                    V ^8  d   QhRRRR/# r   valuer   r	   r
   r   )r   s   "r   r   r   `   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`).
FT)_reqRequirementInvalidRequirementr   s   &r   pep508r$   `   s4    	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                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   q   s      c d r   c                    R # Tr   r#   s   &r   r$   r$   q       r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   u   s     ) )c )d )r   c                   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  ,   <"   T F	  qS9   x  K  	  R # 5iNr   ).0cr   s   & r   	<genexpr>%pep508_versionspec.<locals>.<genexpr>z   s     
/!:s   TFrequirement);]@)anyr$   r#   s   fr   pep508_versionspecr7   u   s?    
 s
/
/sss
/
///  Kw'((r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     ? ?C ?D ?r   c                    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.   is   & r   r0   +pep517_backend_reference.<locals>.<genexpr>   s     P&O7799&O   .c              3  J   "   T F  q'       g   K  \        V4      x  K  	  R # 5ir-   python_identifierr>   s   & r   r0   r@      s     >[A# ##[s   	##FT)	partition_chainsplitall)r   module_objidentifierss   &    r   pep517_backend_referencerN      sa     __S)NFsPfV\\#->		#&OPK3>[>33>3>3>[>>>r   c                   V ^8  d   QhRR/# )r   r	   r   r   )r   s   "r   r   r      s     
M 
Ms 
Mr   c                 <   ^ 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)    N)Message)urlopenz.https://pypi.org/pypi?:action=list_classifiers)contextzcontent-typez
text/plaincontent_typecharsetzutf-8)
sslemail.messagerR   urllib.requestrS   create_default_context	getheaderreaddecode	get_param)rW   rR   rS   urlrT   responseheaderss          r   _download_classifiersrb      sy    %&
:C((*G		&	&()"*"4"4^\"R}}%%g&7&7	7&KL 
'	&	&	&s   AB

B	c                  L    ] tR t^t$ RtR]R&    R R ltR R ltR R	 ltR
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).
z None | Literal[False] | set[str]
downloadedc                   V ^8  d   QhRR/# r   r	   Noner   )r   s   "r   r   _TroveClassifier.__annotate__   s     + +$ +r   c                	0    R V n         RV n        RV n        R # )NFtrove_classifier)re   _skip_download__name__selfs   &r   __init___TroveClassifier.__init__   s    #*r   c                   V ^8  d   QhRR/# rg   r   )r   s   "r   r   ri      s     # #4 #r   c                	    R V n         R# )TN)rl   rn   s   &r   _disable_download"_TroveClassifier._disable_download   s
    "r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   ri      s     R Rc Rd Rr   c                	T   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)FT
NO_NETWORK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 ::)re   rl   osgetenv_loggerdebugsetrb   
splitlines	Exceptionlower
startswith)ro   r   msgs   && r   __call___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')rm   rl   re   N)
rm   
__module____qualname____firstlineno____doc____annotations__rp   rt   r   __static_attributes__r   r   r   rd   rd      s*     10+
#R Rr   rd   )classifiersc                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     U U U Ur   c                b    V \         9   ;'       g     V P                  4       P                  R4      # )z!See https://pypi.org/classifiers/rz   )_trove_classifiersr   r   r#   s   &r   rk   rk      s'    **TTekkm.F.F|.TTr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     L LC LD Lr   c           	         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`.
rB   -stubsFN)rH   endswithpython_module_namejoinlen)r   topchildrens   &  r   pep561_stub_namer      sP    
 [[%NC<<!!chh,<s8}n(='I'IJKKr   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s      s t r   c                <   ^ RI Hp  V! V 4      pVP                  '       gB   \        P	                  RV  24       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: r5   zhttp://F)/\)	urllib.parser   schemer}   warningr   r
   netlocr   )r   r   partss   &  r   r_   r_      s    
 &|||OO  %w(
 $$[11SE\ 75'!23ELL11U\\22 s   B AB ;B BBz[^\[\s=]([^=]*[^\s=])?z[\w.-]+z\w+(\.\w+)*c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s        S  T  r   c                "    V P                  4       # )zPCan be used as identifier in Python.
(Validation uses :obj:`str.isidentifier`).
)isidentifierr#   s   &r   rE   rE     s     r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     ? ?s ?t ?r   c                   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``).
rB   Fc              3  8   "   T F  p\        V4      x  K  	  R # 5ir-   rD   )r.   ms   & r   r0   .python_qualified_identifier.<locals>.<genexpr>'  s     >-= ##-=   T)r   r   rI   rH   r#   s   &r   python_qualified_identifierr      sa    
 s 3 33>U[[-=>33>3>3>U[[-=>>>r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   *  s     . .c .d .r   c                    \        V 4      # )zkModule name that can be used in an ``import``-statement in Python.
See :obj:`python_qualified_identifier`.
)r   r#   s   &r   r   r   *  s     'u--r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   1  s     7 7c 7d 7r   c                    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`).
-Fr   rK   )r   r   r   replacer#   s   &r   python_module_name_relaxedr   1  sN     s 3 3~~hemmC566r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   D  s     ; ;3 ;4 ;r   c                0    \         P                  V 4      RJ# )z`See ``Data model > group`` in the :ref:`PyPA's entry-points specification
<pypa:entry-points>`.
N)ENTRYPOINT_GROUP_REGEXr   r#   s   &r   python_entrypoint_groupr   D  s     "''.d::r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   K  s     
 
# 
$ 
r   c                    \         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_PATTERNr}   r   )r   r   s   & r   python_entrypoint_namer   K  sR     !!%((&,,U33eW$KL,,r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   X  s     B Bs Bt Br   c                   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:   [r4   Fc              3  @   "   T F  qP                  4       x  K  	  R # 5ir-   r<   )r.   xs   & r   r0   .python_entrypoint_reference.<locals>.<genexpr>e  s     X%W''))%WrA   z[],c              3  8   "   T F  p\        V4      x  K  	  R # 5ir-   )r   )r.   es   & r   r0   r   f  s     8A$Q''r   T`z4` - using extras for entry points is not recommendedrB   c              3  T   "   T F  p\        VP                  4       4      x  K   	  R # 5ir-   )rE   r=   r>   s   & r   r0   r   n  s     A[ ++[s   &()
rF   r=   string
whitespacerH   rI   r}   r   rG   iter)	r   rJ   rK   restrL   extras_extrasmodule_partsrM   s	   &        r   python_entrypoint_referencer   X  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                    V ^8  d   QhRRRR/# r   r   zbuiltins.intr	   r
   r   )r   s   "r   r   r   q  s       $ r   c                .    ^ T u;8*  ;'       d    R8  # u # )z/Unsigned 8-bit integer (:math:`0 \leq x < 2^8`)   r   r#   s   &r   uint8r   q  s    r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   v        , 4 r   c                .    ^ T u;8*  ;'       d    R8  # u # )z3Unsigned 16-bit integer (:math:`0 \leq x < 2^{16}`)i   r   r#   s   &r   uint16r   v      r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   {  r   r   c                .    ^ T u;8*  ;'       d    R8  # u # )z3Unsigned 32-bit integer (:math:`0 \leq x < 2^{32}`)l        r   r#   s   &r   uint32r   {  r   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     r   r   c                .    ^ T u;8*  ;'       d    R8  # u # )z3Unsigned 64-bit integer (:math:`0 \leq x < 2^{64}`)            r   r#   s   &r   uint64r     r   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s        r   c                .    ^ T u;8*  ;'       d    R8  # u # )z1Signed 64-bit integer (:math:`0 \leq x < 2^{64}`)r   r   r#   s   &r   uintr     r   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s     # # # #r   c                .    RT u;8*  ;'       d    ^8  # u # )z4Signed 8-bit integer (:math:`-2^{7} \leq x < 2^{7}`)ir   r#   s   &r   int8r     s    e""d""""r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r          % % %$ %r   c                .    RT u;8*  ;'       d    R8  # u # )z7Signed 16-bit integer (:math:`-2^{15} \leq x < 2^{15}`)i   i r   r#   s   &r   int16r         u$$u$$$$r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     r   r   c                .    RT u;8*  ;'       d    R8  # u # )z7Signed 32-bit integer (:math:`-2^{31} \leq x < 2^{31}`)l        i   r   r#   s   &r   int32r     r   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     r   r   c                .    RT u;8*  ;'       d    R8  # u # z7Signed 64-bit integer (:math:`-2^{63} \leq x < 2^{63}`)l            l         r   r#   s   &r   int64r     r   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s     % %| % %r   c                .    RT u;8*  ;'       d    R8  # u # r   r   r#   s   &r   intr     r   r   )licensesc                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s      C D r   c                l     \         P                  ! V 4       R#   \         P                   d     R# i ; i)zrSee :ref:`PyPA's License-Expression specification
<pypa:core-metadata-license-expression>` (added in :pep:`639`).
FT)	_licensescanonicalize_license_expressionInvalidLicenseExpressionr#   s   &r   SPDXr     s4    	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                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s      C D r   c                    R # r(   r   r#   s   &r   r   r     r)   r   aP  
    ^                                  # start of string
        [A-Za-z_][A-Za-z_0-9]+         # a valid Python identifier
        (?:\.[A-Za-z_][A-Za-z_0-9]*)*  # optionally followed by .identifier's
    (?:\s*;\s*private)?                # optionally followed by ; private
    $                                  # end of string
    c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     s     	U 	Us 	Ut 	Ur   c                :   \         P                  V 4      f   R# V P                  R4      w  p p\        ;QJ d9    R VP	                  4       P                  R4       4       F  '       d   K   R# 	  R# ! R VP	                  4       P                  R4       4       4      # )zThis is a valid import name. It has to be series of python identifiers
(not keywords), separated by dots, optionally followed by a semicolon and
the keyword "private".
Fr3   c              3  X   "   T F   p\         P                  ! V4      '       * x  K"  	  R # 5ir-   )keyword	iskeyword)r.   idents   & r   r0   import_name.<locals>.<genexpr>  s#     T9S7$$U+++9Ss   (*rB   T)VALID_IMPORT_NAMEr   rF   rI   rstriprH   )r   identsrK   s   &  r   import_namer    sw    
 u%-??3'LFAq3T9N9Ns9ST33T3T3T9N9Ns9STTTr   )Ir   
__future__r   r  loggingr{   rer   typing	itertoolsr   rG   TYPE_CHECKINGbuiltinstyping_extensionsr   	getLoggerrm   r}   VERSION_PATTERNcompileVERBOSE
IGNORECASEr   r   PEP508_IDENTIFIER_PATTERNr   r   	packagingr   r    ImportErrorsetuptools._vendor.packagingr$   r   r7   rN   rb   rd   trove_classifiersr   r   rk   r   r_   ENTRYPOINT_PATTERNr   r   r   ENTRYPOINT_GROUP_PATTERNr   rE   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r   r   r   <module>r"     s~   #   	 	   %	)


H
%
> 

o'bmm)C
4 G **q)B(C1%Er}}U ;
2*)&?
M2R 2Rj*CUL0 / ::"4!5Q7G  *  jj%&a("--  * a(@'A$CR]]S  ?.7&;
B2




#
%
%
%
%
/* JJ JJ	 	U[  
	
 	

   OO	= l  *')*`  OO	CsT   H 
H -H? I HH HH H<;H<?III54I5