o
    ^+)h "                     @   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	   lC:\Users\User\Downloads\Proyecto_IoT\venv\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   s   dd l } ddlm} ddlm} d}|  }|||d}| }|dd|d< | |	d	d
W  d    S 1 s=w   Y  d S )Nr   )Message)urlopenz.https://pypi.org/pypi?:action=list_classifiers)contextzcontent-typez
text/plaincontent_typecharsetzutf-8)
sslemail.messager7   urllib.requestr8   create_default_context	getheaderreaddecode	get_param)r<   r7   r8   urlr9   responseheadersr	   r	   r
   _download_classifiersq   s   $rG   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   )rK   rM   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 ::)rJ   rK   osgetenv_loggerdebugsetrG   
splitlines	Exceptionlower
startswith)rN   r   msgr	   r	   r
   __call__   s(   



z_TroveClassifier.__call__N)	rL   
__module____qualname____doc__rO   rP   strboolr\   r	   r	   r	   r
   rH   ~   s
    rH   )classifiersc                 C   s   | t v p
|  dS )NrQ   )_trove_classifiersrY   rZ   r   r	   r	   r
   rI      s   rI   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.parserd   schemerT   warningrZ   ra   netlocrX   )r   rd   partsr	   r	   r
   rD      s   rD   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>)rZ   endswithr1   r0   r   r	   r	   r
   python_qualified_identifier   s   rq   c                 C   s   t | S r   )rq   r   r	   r	   r
   python_module_name   rm   rr   c                 C   r   r   )ENTRYPOINT_GROUP_REGEXr   r   r	   r	   r
   python_entrypoint_group   r   rt   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_PATTERNrT   ri   )r   r[   r	   r	   r
   python_entrypoint_name   s   


rx   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   rn   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   rT   ri   r/   )	r   r2   r3   restr4   Zextras_extrasmodule_partsr5   r	   r	   r
   python_entrypoint_reference   s    
r   )2loggingrR   rer   typing	itertoolsr   r/   	getLoggerrL   rT   VERSION_PATTERNcompileXIr   r`   ra   r   ZPEP508_IDENTIFIER_PATTERNr   r   	packagingr   r   ImportErrorZsetuptools._vendor.packagingr   ri   r#   r6   rG   rH   Ztrove_classifiersrb   rc   rI   rD   ZENTRYPOINT_PATTERNru   rw   rv   ZENTRYPOINT_GROUP_PATTERNrs   r,   rq   rr   rt   rx   r   r	   r	   r	   r
   <module>   sb    

0

