
    df "                     v   d dl Z d dlZd dlZd dlZd dlZd dlmZ  e j                  e	      Z
dZ ej                  dez   dz   ej                  ej                  z        ZdedefdZd	Z ej                  d
e dej                        ZdedefdZ	 	 d dlmZ dedefdZdedefdZdedefdZdefdZ G d d      Z 	 d dl!m"Z# dedefdZ$dedefdZ%dZ& ej                  d
e& dej                        Z'dZ( ej                  d
e( dej                        Z)dZ* ej                  d
e* dej                        Z+dedefdZ,dedefdZ-dedefd Z.dedefd!Z/dedefd"Z0dedefd#Z1y# e$ r	 d dlmZ Y w xY w# e$ r e
j9                  d       dedefdZY w xY w# e$ r
  e        Z$Y w xY w)$    N)chaina  
    v?
    (?:
        (?:(?P<epoch>[0-9]+)!)?                           # epoch
        (?P<release>[0-9]+(?:\.[0-9]+)*)                  # release segment
        (?P<pre>                                          # pre-release
            [-_\.]?
            (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
            [-_\.]?
            (?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*$versionreturnc                 0    t         j                  |       d uS N)VERSION_REGEXmatch)r   s    f/home/api-vastappli/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/formats.pypep440r   /   s    w't33    z'([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])^$namec                 0    t         j                  |       d uS r   )PEP508_IDENTIFIER_REGEXr	   )r   s    r
   pep508_identifierr   :   s    "((.d::r   )requirementsvaluec                 b    	 t        j                  |        y# t         j                  $ r Y yw xY w)NTF)_reqRequirementInvalidRequirementr   s    r
   pep508r   E   s0    	U#&& 		s    ..zCould not find an installation of `packaging`. Requirements, dependencies and versions might not be validated. To enforce validation, please install `packaging`.c                      yNT r   s    r
   r   r   S   s    r   c                 J     t         fddD              ryt        d        S )zGExpression that can be used to specify/lock versions (including ranges)c              3   &   K   | ]  }|v  
 y wr   r   ).0cr   s     r
   	<genexpr>z%pep508_versionspec.<locals>.<genexpr>Y   s     
/!1:
/s   );]@Frequirement)anyr   r   s   `r
   pep508_versionspecr(   W   s*    

/
//  Kw'((r   c                     | j                  d      \  }}}d t        |j                  d      |j                  d            D        }t        d |D              S )N:c              3   <   K   | ]  }|j                           y wr   stripr    is     r
   r"   z+pep517_backend_reference.<locals>.<genexpr>i   s     P1779P   .c              3   8   K   | ]  }|st        |        y wr   python_identifierr.   s     r
   r"   z+pep517_backend_reference.<locals>.<genexpr>j   s     >A #>s   )	partition_chainsplitall)r   module_objidentifierss        r
   pep517_backend_referencer=   g   sI    __S)NFAsPfV\\#->		#&OPK>[>>>r   c                     dd l } ddlm} ddlm} d}| j                         } |||      5 } |       }|j                  dd      |d<   |j                         j                  |j                  d	d
            cd d d        S # 1 sw Y   y xY w)Nr   )Message)urlopenz.https://pypi.org/pypi?:action=list_classifiers)contextzcontent-typez
text/plaincontent_typecharsetzutf-8)
sslemail.messager?   urllib.requestr@   create_default_context	getheaderreaddecode	get_param)rD   r?   r@   urlrA   responseheaderss          r
   _download_classifiersrO   q   s    %&
:C((*G	g	& M()"*"4"4^\"R}}%%g&7&7	7&KLM M Ms   ABBc                   ,    e Zd ZdZd Zd ZdedefdZy)_TroveClassifierak  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                 .    d | _         d| _        d| _        y )NFtrove_classifier)
downloaded_skip_download__name__selfs    r
   __init__z_TroveClassifier.__init__   s    FJ# +r   c                     d| _         y r   )rU   rW   s    r
   _disable_downloadz"_TroveClassifier._disable_download   s
    "r   r   r   c                    | j                   du s| j                  du ryt        j                  d      st        j                  d      rd| _         d}t        j                  |       y| j                   >d}t        j                  |       	 t        t               j                               | _         || j                   v xs |j                         j                  d      S # t        $ r d| _         t        j                  d       Y yw xY w)	NFT
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 ::)rT   rU   osgetenv_loggerdebugsetrO   
splitlines	Exceptionlower
startswith)rX   r   msgs      r
   __call__z_TroveClassifier.__call__   s    ??e#t':':d'B99\"bii0O&P#DOP  MM#??"P  MM#"%&;&=&H&H&J"K 'Q5;;=+C+CL+QQ  "'JKs   &C   %DDN)	rV   
__module____qualname____doc__rY   r[   strboolrj   r   r   r
   rQ   rQ   ~   s'    +#Rc Rd Rr   rQ   )classifiersc                 T    | t         v xs | j                         j                  d      S )Nr_   )_trove_classifiersrg   rh   r   s    r
   rS   rS      s$    **Tekkm.F.F|.TTr   c                 .   ddl m} 	  ||       }|j                  sIt        j	                  d|         | j                  d      s | j                  d      sd| v s |d|        }t        |j                  xr |j                        S # t        $ r Y yw xY w)	Nr   )urlparsezsFor maximum compatibility please make sure to include a `scheme` prefix in your URL (e.g. 'http://'). Given value: /\r%   zhttp://F)	urllib.parsert   schemerb   warningrh   ro   netlocrf   )r   rt   partss      r
   rL   rL      s    %||OO  %w(
 $$S)U-=-=d-Cse| 75'!23ELL1U\\22 s   A?B 	BBz[^\[\s=]([^=]*[^\s=])?z[\w.-]+z\w+(\.\w+)*c                 "    | j                         S r   )isidentifierr   s    r
   r4   r4      s    r   c                     | j                  d      s| j                  d      ryt        d | j                  d      D              S )Nr1   Fc              3   2   K   | ]  }t        |        y wr   r3   )r    ms     r
   r"   z.python_qualified_identifier.<locals>.<genexpr>   s     > #>   )rh   endswithr8   r7   r   s    r
   python_qualified_identifierr      s8    s 3>U[[-=>>>r   c                     t        |       S r   )r   r   s    r
   python_module_namer      s    &u--r   c                 0    t         j                  |       d uS r   )ENTRYPOINT_GROUP_REGEXr	   r   s    r
   python_entrypoint_groupr      s    !''.d::r   c                     t         j                  |       syt        j                  |       s$d|  d}|t        z  }t        j                  |       y)NFzEntry point `z'` does not follow recommended pattern: T)ENTRYPOINT_REGEXr	   RECOMMEDED_ENTRYPOINT_REGEXRECOMMEDED_ENTRYPOINT_PATTERNrb   ry   )r   ri   s     r
   python_entrypoint_namer      sJ    !!%(&,,U3eW$KL,,r   c                    | j                  d      \  }}}d|v r|j                  d      \  }}}|j                         d   dk7  ryd |j                  t        j                  dz         j	                  d      D        }t        d	 |D              syt        j                  d
|  d       n|}|j	                  d      }|rt        ||j	                  d            n|}t        d |D              S )Nr*   [r$   Fc              3   <   K   | ]  }|j                           y wr   r,   )r    xs     r
   r"   z.python_entrypoint_reference.<locals>.<genexpr>   s     X!'')Xr0   z[],c              3   2   K   | ]  }t        |        y wr   )r   )r    es     r
   r"   z.python_entrypoint_reference.<locals>.<genexpr>   s     8A$Q'8r   `z4` - using extras for entry points is not recommendedr1   c              3   N   K   | ]  }t        |j                                 y wr   )r4   r-   r.   s     r
   r"   z.python_entrypoint_reference.<locals>.<genexpr>  s     A +As   #%)	r5   r-   string
whitespacer7   r8   rb   ry   r6   )	r   r9   r:   restr;   extras_extrasmodule_partsr<   s	            r
   python_entrypoint_referencer      s    ooc*OFAt
d{..-Q==?2#%XW]]63D3Dt3K%L%R%RSV%WX888!E7"VWX<<$L:>&syy~6LKA[AAAr   )2loggingr`   rer   typing	itertoolsr   r6   	getLoggerrV   rb   VERSION_PATTERNcompileXIr   rn   ro   r   PEP508_IDENTIFIER_PATTERNr   r   	packagingr   r   ImportErrorsetuptools._vendor.packagingr   ry   r(   r=   rO   rQ   trove_classifiersrp   rr   rS   rL   ENTRYPOINT_PATTERNr   r   r   ENTRYPOINT_GROUP_PATTERNr   r4   r   r   r   r   r   r   r   r
   <module>r      s    	 	   %
'

H
%
> 

7_4w>rttL4C 4D 4 G $"**q)B(C1%ErttL ;C ;D ;F2
c d $	)c 	)d 	) ?C ?D ?
Ms 
M-R -R`*CU U Us t ( / 2::"4!5Q7>  * (bjj1-J,K1)MrttT ) #a(@'A$CRTTJ  S  T  ?s ?t ?.c .d .;3 ;4 ;# $ Bs Bt Bg  FEF  OO	=c d P  *')*sB   E3 F F) 3F>F  FF F&%F&)F87F8