o
    5d!                     @   s^  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 e	Z
dZede d ejejB Zdedefdd	Zd
Zede dejZdedefddZz#zd dlmZ W n eyf   d dlmZ Y nw dedefddZW n ey   e
d dedefddZY nw dedefddZdedefddZdefddZG dd dZ zd dl!m"Z# dedefdd Z$W n ey   e  Z$Y nw dedefd!d"Z%d#Z&ede& dejZ'd$Z(ede( dejZ)d%Z*ede* dejZ+dedefd&d'Z,dedefd(d)Z-dedefd*d+Z.dedefd,d-Z/dedefd.d/Z0dedefd0d1Z1dS )2    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                 C      t | d uS N)VERSION_REGEXmatch)r    r	   C:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\setuptools/config/_validate_pyproject/formats.pypep440/      r   z'([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])^$namec                 C   r   r   )PEP508_IDENTIFIER_REGEXr   )r   r	   r	   r
   pep508_identifier:   r   r   )requirementsvaluec                 C   s(   zt |  W dS  t jy   Y dS w )NTF)_reqRequirementInvalidRequirementr   r	   r	   r
   pep508E   s   
r   zCould not find an installation of `packaging`. Requirements, dependencies and versions might not be validated. To enforce validation, please install `packaging`.c                 C   s   dS NTr	   r   r	   r	   r
   r   S   s   c                    s(   t  fdddD rdS td  S )zGExpression that can be used to specify/lock versions (including ranges)c                 3   s    | ]}| v V  qd S r   r	   ).0cr   r	   r
   	<genexpr>Y       z%pep508_versionspec.<locals>.<genexpr>);]@Frequirement)anyr   r   r	   r   r
   pep508_versionspecW   s   r#   c                 C   sB   |  d\}}}dd t|d|dD }tdd |D S )N:c                 s       | ]}|  V  qd S r   stripr   ir	   r	   r
   r   i   r   z+pep517_backend_reference.<locals>.<genexpr>.c                 s   s    | ]	}|rt |V  qd S r   python_identifierr(   r	   r	   r
   r   j       )	partition_chainsplitall)r   module_objidentifiersr	   r	   r
   pep517_backend_referenceg   s    r6   c                  C   st   dd l } ddlm} d}|| }|dd}| |d dd}| |W  d    S 1 s3w   Y  d S )	Nr   )urlopenz.https://pypi.org/pypi?:action=list_classifierszcontent-typez
text/plain   charsetzutf-8)cgiurllib.requestr7   	getheaderZparse_headergetreaddecode)r:   r7   urlresponsecontent_typeencodingr	   r	   r
   _download_classifiersq   s   
$rD   c                   @   s2   e Zd ZdZdd Zdd Zdedefdd	Zd
S )_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                 C   s   d | _ d| _d| _d S )NFtrove_classifier)
downloaded_skip_download__name__selfr	   r	   r
   __init__   s   
z_TroveClassifier.__init__c                 C   s
   d| _ d S r   )rH   rJ   r	   r	   r
   _disable_download   s   
z"_TroveClassifier._disable_downloadr   r   c                 C   s   | j du s
| jdu rdS tdstdr"d| _ d}t| dS | j d u rKd}t| z
tt  | _ W n t	yJ   d| _ td Y dS w || j v pV|
 dS )	NFTZ
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 ::)rG   rH   osgetenv_loggerdebugsetrD   
splitlines	Exceptionlower
startswith)rK   r   msgr	   r	   r
   __call__   s(   



z_TroveClassifier.__call__N)	rI   
__module____qualname____doc__rL   rM   strboolrY   r	   r	   r	   r
   rE   |   s
    rE   )classifiersc                 C   s   | t v p
|  dS )NrN   )_trove_classifiersrV   rW   r   r	   r	   r
   rF      s   rF   c                 C   s|   ddl m} z-|| }|js+td|   | ds+| ds+d| v s+|d|  }t|jo1|jW S  ty=   Y dS 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.parsera   schemerQ   warningrW   r^   netlocrU   )r   ra   partsr	   r	   r
   r@      s   r@   z[^\[\s=]([^=]*[^\s=])?z[\w.-]+z\w+(\.\w+)*c                 C   s   |   S r   )isidentifierr   r	   r	   r
   r,         r,   c                 C   s0   |  ds
| drdS tdd | dD S )Nr*   Fc                 s       | ]}t |V  qd S r   r+   )r   mr	   r	   r
   r      r   z.python_qualified_identifier.<locals>.<genexpr>)rW   endswithr1   r0   r   r	   r	   r
   python_qualified_identifier   s   rn   c                 C   s   t | S r   )rn   r   r	   r	   r
   python_module_name   rj   ro   c                 C   r   r   )ENTRYPOINT_GROUP_REGEXr   r   r	   r	   r
   python_entrypoint_group   r   rq   c                 C   s:   t | sdS t| sd|  d}|t7 }t| dS )NFzEntry point `z'` does not follow recommended pattern: T)ENTRYPOINT_REGEXr   RECOMMEDED_ENTRYPOINT_REGEXRECOMMEDED_ENTRYPOINT_PATTERNrQ   rf   )r   rX   r	   r	   r
   python_entrypoint_name   s   


ru   c           	      C   s   |  d\}}}d|v rC| d\}}}| d dkrdS dd |tjd d	D }td
d |D s9dS td|  d n|}|d}|rTt||dn|}tdd |D S )Nr$   [r   Fc                 s   r%   r   r&   )r   xr	   r	   r
   r      r   z.python_entrypoint_reference.<locals>.<genexpr>z[],c                 s   rk   r   )r   )r   er	   r	   r
   r      r   `z4` - using extras for entry points is not recommendedr*   c                 s   s    | ]	}t | V  qd S r   )r,   r'   r(   r	   r	   r
   r     r-   )	r.   r'   string
whitespacer0   r1   rQ   rf   r/   )	r   r2   r3   restr4   Zextras_extrasmodule_partsr5   r	   r	   r
   python_entrypoint_reference   s    
r   )2loggingrO   rer|   typing	itertoolsr   r/   	getLoggerrI   rQ   VERSION_PATTERNcompileXIr   r]   r^   r   ZPEP508_IDENTIFIER_PATTERNr   r   	packagingr   r   ImportErrorZsetuptools._vendor.packagingr   rf   r#   r6   rD   rE   Ztrove_classifiersr_   r`   rF   r@   ZENTRYPOINT_PATTERNrr   rt   rs   ZENTRYPOINT_GROUP_PATTERNrp   r,   rn   ro   rq   ru   r   r	   r	   r	   r
   <module>   sb    

0

