o
    jb                     @  s  d dl mZ d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m	Z	 d dl
mZmZmZmZmZmZ d dlmZ dd	lmZmZmZ dd
lmZ ddlmZmZ ddlmZmZmZm Z  ddl!m"Z" erd dlm#Z#m$Z$ d dl%m&Z& d dl'm(Z( ddlm)Z) e*e+Z,g dZ-d{ddZ.edZ/edZ0G dd deZ1ede1dZ2e3dZ4d|d!d"Z5d}d%d&Z6d~d)d*Z7dd.d/Z8dd5d6Z9dd7d8Z:dd;d<Z;dd@dAZ<ddBdCZ=ddFdGZ>ddJdKZ?ddMdNZ@ddPdQZAddTdUZBddYdZZCdd[d\ZDdd]d^ZEdd`daZFG dbdc dceGZHG ddde deeHZIG dfdg dgeHZJG dhdi dieGZKedjdkdlG dmdn dnZLedjdkdlG dodp dpZMedjdkdlG dqdr drZNedjdkdlG dsdt dtZOedjdkdlG dudv dvZPedjdkdlG dwdx dxZQedjdkdlG dydz dzZRdS )    )annotationsN)MappingSequence)	dataclass)datetime)TYPE_CHECKINGAnyCallableProtocolTypeVarcast)urlparse   )EnvironmentMarkerdefault_environment)SpecifierSet)create_compatible_tags_selectorsys_tags)NormalizedNameis_normalized_nameparse_sdist_filenameparse_wheel_filename)Version)
CollectionIterator)Path)Self)Tag)
PackagePackageArchivePackageDirectoryPackageSdist
PackageVcsPackageWheelPylockPylockUnsupportedVersionErrorPylockValidationErroris_valid_pylock_pathreturn	list[str]c                   C  s   t S N)__all__ r-   r-   Q/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/packaging/pylock.py__dir__6      r/   _T_T2c                   @  s   e Zd ZedddZdS )	_FromMappingProtocoldMapping[str, Any]r)   r   c                 C  s   d S r+   r-   clsr4   r-   r-   r.   
_from_dict?   r0   z_FromMappingProtocol._from_dictNr4   r5   r)   r   )__name__
__module____qualname__classmethodr8   r-   r-   r-   r.   r3   >   s    r3   _FromMappingProtocolT)boundz^pylock\.([^.]+)\.toml$pathr   boolc                 C  s   | j dkptt| j S )z4Check if the given path is a valid pylock file path.zpylock.toml)namerA   _PYLOCK_FILE_NAME_REmatchr@   r-   r-   r.   r(   I   s   r(   keystrc                 C  s   |  ddS )N_-)replace)rF   r-   r-   r.   	_toml_keyN   s   rK   valuer   c                 C  s<   t |tttfrt|S t |tr| dkrdd |D S |S )Nenvironmentsc                 S  s   g | ]}t |qS r-   )rG   ).0vr-   r-   r.   
<listcomp>V   s    z_toml_value.<locals>.<listcomp>)
isinstancer   r   r   rG   r   )rF   rL   r-   r-   r.   _toml_valueR   s
   rR   datalist[tuple[str, Any]]dict[str, Any]c                 C  s   dd | D S )Nc                 S  s(   i | ]\}}|d urt |t||qS r+   )rK   rR   )rN   rF   rL   r-   r-   r.   
<dictcomp>[   s
    z&_toml_dict_factory.<locals>.<dictcomp>r-   )rS   r-   r-   r.   _toml_dict_factoryZ   s   rW   r4   r5   expected_typetype[_T]	_T | Nonec                 C  sF   |  | }du rdS t||s!tdt|j d|j d|d|S )zBGet a value from the dictionary and verify it's the expected type.NUnexpected type  (expected )context)getrQ   r'   typer:   r4   rX   rF   rL   r-   r-   r.   _getb   s   
rc   c                 C      t | || }du rt||S )zKGet a required value from the dictionary and verify it's the expected type.N)rc   _PylockRequiredKeyErrorrb   r-   r-   r.   _get_requiredo   s   rf   expected_item_typeSequence[_T] | Nonec                 C  s   t | t| }du rdS t|ttfr tdt|j d|dt|D ] \}}t||sDtdt|j d|j d| d| ddq$|S )	zMGet a list value from the dictionary and verify it's the expected items type.Nr[   z (expected Sequence)r^   r\   r]   [])	rc   r   rQ   rG   bytesr'   ra   r:   	enumerate)r4   rg   rF   rL   iitemr-   r-   r.   _get_sequencev   s"   
ro   target_typeCallable[[_T], _T2]
_T2 | Nonec              
   C  sJ   t | || }du rdS z||W S  ty$ } zt||d|d}~ww )zGet a value from the dictionary, verify it's the expected type,
    and convert to the target type.

    This assumes the target_type constructor accepts the value.
    Nr^   )rc   	Exceptionr'   )r4   rX   rp   rF   rL   er-   r-   r.   _get_as   s   
ru   c                 C  s"   t | ||| }du rt||S )zfGet a required value from the dict, verify it's the expected type,
    and convert to the target type.N)ru   re   )r4   rX   rp   rF   rL   r-   r-   r.   _get_required_as   s   rv   target_item_typelist[_T2] | Nonec           	   
   C  sv   t | || }du rdS g }z|D ]}||}|| qW |S  ty: } zt|| dt| dd|d}~ww )z>Get list value from dictionary and verify expected items type.Nri   rj   r^   )ro   appendrs   r'   len)	r4   rg   rw   rF   rL   resultrn   
typed_itemrt   r-   r-   r.   _get_sequence_as   s   r}   type[_FromMappingProtocolT]_FromMappingProtocolT | Nonec              
   C  sL   t | t| }du rdS z||W S  ty% } zt||d|d}~ww )zIGet a dictionary value from the dictionary and convert it to a dataclass.Nr^   )rc   r   r8   rs   r'   )r4   rp   rF   rL   rt   r-   r-   r.   _get_object   s   r   "list[_FromMappingProtocolT] | Nonec              
   C  sx   t | t| }du rdS g }z|D ]}||}|| qW |S  ty; } zt|| dt| dd|d}~ww )zJGet a list value from the dictionary and convert its items to a dataclass.Nri   rj   r^   )ro   r   r8   ry   rs   r'   rz   )r4   rw   rF   rL   r{   rn   r|   rt   r-   r-   r.   _get_sequence_of_objects   s   
r   Sequence[_FromMappingProtocolT]c                 C  rd   )zWGet a required list value from the dictionary and convert its items to a
    dataclass.N)r   re   )r4   rw   rF   r{   r-   r-   r.   !_get_required_sequence_of_objects   s   r   rB   r   c                 C  s    t | std| dt| S )z+Validate that a string is a NormalizedName.zName z is not normalized)r   r'   r   )rB   r-   r-   r.   _validate_normalized_name   s   r   
str | NoneurlNonec                 C  s   | s|s
t dd S d S )Nzpath or url must be provided)r'   )r@   r   r-   r-   r.   _validate_path_url   s   r   c                 C  s<   | sd S d| v r|  ddd S d| v r|  ddd S | S )N/r   \)rsplitrE   r-   r-   r.   
_path_name   s   r   c                 C  s"   | sd S t | j}|ddd S )Nr   r   r   )r   r@   r   )r   Zurl_pathr-   r-   r.   	_url_name   s   
r   hashesc                 C  s.   | st dtdd |  D st d| S )Nz"At least one hash must be providedc                 s  s    | ]}t |tV  qd S r+   )rQ   rG   )rN   Zhash_valr-   r-   r.   	<genexpr>  s    z#_validate_hashes.<locals>.<genexpr>zHash values must be strings)r'   allvalues)r   r-   r-   r.   _validate_hashes  s
   r   c                   @  s@   e Zd ZU dZdZded< ded< dddddZdddZdS )r'   z2Raised when when input data is not spec-compliant.Nr   r_   rG   messager^   causestr | Exceptionr)   r   c                C  sT   t |tr |jr|r| d|j n|j| _n|| _|j| _d S || _t|| _d S )N.)rQ   r'   r_   r   rG   )selfr   r_   r-   r-   r.   __init__  s   
zPylockValidationError.__init__c                 C  s   | j r| j d| j S | jS )Nz in )r_   r   r   r-   r-   r.   __str__%  s   zPylockValidationError.__str__)r   r   r_   r   r)   r   r)   rG   )r:   r;   r<   __doc__r_   __annotations__r   r   r-   r-   r-   r.   r'     s   
 r'   c                      s   e Zd Zd fddZ  ZS )re   rF   rG   r)   r   c                   s   t  jd|d d S )NzMissing required valuer^   )superr   )r   rF   	__class__r-   r.   r   ,  s   z _PylockRequiredKeyError.__init__)rF   rG   r)   r   )r:   r;   r<   r   __classcell__r-   r-   r   r.   re   +  s    re   c                   @     e Zd ZdZdS )r&   z7Raised when encountering an unsupported `lock_version`.Nr:   r;   r<   r   r-   r-   r-   r.   r&   0      r&   c                   @  r   )PylockSelectErrorz:Base exception for errors raised by :meth:`Pylock.select`.Nr   r-   r-   r-   r.   r   4  r   r   TF)frozeninitc                   @  sr   e Zd ZU ded< dZded< dZded< dZded< ded< dZded	< ddddd
dddZe	dddZ
dS )r#   rG   ra   Nr   r   r@   requested_revision	commit_idsubdirectory)r   r@   r   r   r)   r   c                C  X   t | d| t | d| t | d| t | d| t | d| t | d| d S )Nra   r   r@   r   r   r   object__setattr__)r   ra   r   r@   r   r   r   r-   r-   r.   r   A     zPackageVcs.__init__r4   r5   r   c              
   C  sV   | t |tdt|tdt|tdt|tdt |tdt|tdd}t|j|j |S )Nra   r   r@   zrequested-revisionz	commit-idr   )ra   r   r@   r   r   r   )rf   rG   rc   r   r@   r   )r7   r4   Zpackage_vcsr-   r-   r.   r8   S  s   





zPackageVcs._from_dict)ra   rG   r   r   r@   r   r   r   r   rG   r   r   r)   r   r9   )r:   r;   r<   r   r   r@   r   r   r   r=   r8   r-   r-   r-   r.   r#   8  s   
 r#   c                   @  sN   e Zd ZU ded< dZded< dZded< ddddddZedddZdS )r!   rG   r@   Nbool | Noneeditabler   r   )r   r   r)   r   c                C  s.   t | d| t | d| t | d| d S )Nr@   r   r   r   )r   r@   r   r   r-   r-   r.   r   g  s   zPackageDirectory.__init__r4   r5   r   c                 C  s&   | t |tdt|tdt|tddS )Nr@   r   r   )r@   r   r   )rf   rG   rc   rA   r6   r-   r-   r.   r8   s  s
   


zPackageDirectory._from_dict)r@   rG   r   r   r   r   r)   r   r9   )	r:   r;   r<   r   r   r   r   r=   r8   r-   r-   r-   r.   r!   a  s   
 r!   c                   @  sx   e Zd ZU dZded< dZded< dZded< dZded< d	ed
< dZded< dddddddddZ	e
dddZdS )r    Nr   r   r@   
int | Nonesizedatetime | Noneupload_timeMapping[str, str]r   r   )r   r@   r   r   r   r)   r   c                C  r   )Nr   r@   r   r   r   r   r   )r   r   r@   r   r   r   r   r-   r-   r.   r     r   zPackageArchive.__init__r4   r5   r   c              
   C  sX   | t |tdt |tdt |tdt |tdt|ttdt |tdd}t|j|j	 |S )Nr   r@   r   upload-timer   r   )r   r@   r   r   r   r   )
rc   rG   intr   rv   r   r   r   r@   r   )r7   r4   Zpackage_archiver-   r-   r.   r8     s   




zPackageArchive._from_dict)r   r   r@   r   r   r   r   r   r   r   r   r   r)   r   r9   )r:   r;   r<   r   r   r@   r   r   r   r   r=   r8   r-   r-   r-   r.   r    |  s   
 r    c                   @     e Zd ZU dZded< dZded< dZded< dZded< dZded	< d
ed< dddddddddZ	e
dddZedddZdS )r"   Nr   rB   r   r   r   r@   r   r   r   r   rB   r   r   r@   r   r)   r   c                C  r   NrB   r   r   r@   r   r   r   r   rB   r   r   r@   r   r   r-   r-   r.   r     r   zPackageSdist.__init__r4   r5   r   c                 C  X   | t |tdt |tdt |tdt |tdt |tdt|ttdd}t|j|j	 |S NrB   r   r   r@   r   r   )rB   r   r   r@   r   r   
rc   rG   r   r   rv   r   r   r   r@   r   )r7   r4   Zpackage_sdistr-   r-   r.   r8        




zPackageSdist._from_dictrG   c                 C  *   | j pt| jpt| j}|std|S )zGet the filename of the sdist.zCannot determine sdist filenamerB   r   r@   r   r   r'   r   filenamer-   r-   r.   r        zPackageSdist.filenamerB   r   r   r   r   r   r@   r   r   r   r   r   r)   r   r9   r   r:   r;   r<   rB   r   r   r   r@   r   r   r=   r8   propertyr   r-   r-   r-   r.   r"     "   
 r"   c                   @  r   )r$   Nr   rB   r   r   r   r@   r   r   r   r   r   r)   r   c                C  r   r   r   r   r-   r-   r.   r     r   zPackageWheel.__init__r4   r5   r   c                 C  r   r   r   )r7   r4   Zpackage_wheelr-   r-   r.   r8     r   zPackageWheel._from_dictrG   c                 C  r   )zGet the filename of the wheel.zCannot determine wheel filenamer   r   r-   r-   r.   r     r   zPackageWheel.filenamer   r9   r   r   r-   r-   r-   r.   r$     r   r$   c                   @  s   e Zd ZU ded< dZded< dZded< dZded	< dZd
ed< dZded< dZ	ded< dZ
ded< dZded< dZded< dZded< dZd
ed< dZded< dddddddddddddd(ddZed)d#d$Zed*d&d'ZdS )+r   r   rB   NVersion | NoneversionMarker | NonemarkerSpecifierSet | Nonerequires_python"Sequence[Mapping[str, Any]] | NonedependenciesPackageVcs | NonevcsPackageDirectory | None	directoryPackageArchive | Nonearchiver   indexPackageSdist | NonesdistSequence[PackageWheel] | Nonewheelsattestation_identitiesMapping[str, Any] | Nonetool)r   r   r   r   r   r   r   r   r   r   r   r   r)   r   c                C  s   t | d| t | d| t | d| t | d| t | d| t | d| t | d| t | d| t | d	|	 t | d
|
 t | d| t | d| t | d| d S )NrB   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rB   r   r   r   r   r   r   r   r   r   r   r   r   r-   r-   r.   r     s   zPackage.__init__r4   r5   r   c                 C  s  | t |ttdt|ttdt|ttdt|tdt|ttdt	|t
dt	|tdt	|tdt|td	t	|td
t|tdt|tdt|tdd}t|jt|jpRg  }t|jt|j t|j }|dkrp|dkrptd|dkr||dkr|tdt|jpg D ]^\}}zt|j\}}}	}	W n ty }
 ztd|jd| dd|
d }
~
ww ||jkrtd|jd|jd| dd|jr||jkrtd|jdt|jd| ddq|jr:z
t|jj\}}W n ty	 }
 ztd|jjd
d|
d }
~
ww ||jkrtd|jjd|jd
d|jr:||jkr:td|jjdt|jd
dzt|j pAg D ]\}}t!|td qCW |S  tyi }
 zt|
d| dd|
d }
~
ww )NrB   r   requires-pythonr   r   r   r   r   r   r   r   zattestation-identitiesr   )rB   r   r   r   r   r   r   r   r   r   r   r   r   r   zFNone of vcs, directory, archive must be set if sdist or wheels are setr   zRExactly one of vcs, directory, archive must be set if sdist and wheels are not setzInvalid wheel filename zwheels[rj   r^   zName in z% is not consistent with package name zVersion in z( is not consistent with package version zInvalid sdist filename kindzattestation-identities[)"rv   rG   r   ru   r   r   ro   r   r   r   r#   r!   r    rc   r"   r   r$   rA   r   rz   r   r   r   r   r'   rl   r   r   rs   rB   r   r   r   rf   )r7   r4   packagedistributionsZdirect_urlsrm   wheelrB   r   rH   rt   Zattestation_identityr-   r-   r.   r8   7  s   
















zPackage._from_dictrA   c                 C  s   | j p| j S r+   )r   r   r   r-   r-   r.   	is_direct     zPackage.is_direct)rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   r   r9   )r)   rA   )r:   r;   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r8   r   r   r-   r-   r-   r.   r     s>   
  Pr   c                   @  s   e Zd ZU dZded< dZded< dZded< dZd	ed
< dZded< dZ	ded< ded< ded< dZ
ded< dddddddd-ddZed.ddZed.ddZd/d d!Zd0d"d#Zddddd$d1d+d,ZdS )2r%   z#A class representing a pylock file.r   lock_versionNSequence[Marker] | NonerM   r   r   Sequence[NormalizedName] | NoneextrasSequence[str] | Nonedependency_groupsdefault_groupsrG   
created_bySequence[Package]packagesr   r   )rM   r   r   r   r   r   r)   r   c       	   
      C  s   t | d| t | d| t | d| t | d| t | d| t | d| t | d| t | d| t | d	|	 d S )
Nr   rM   r   r   r   r   r   r   r   r   )
r   r   rM   r   r   r   r   r   r   r   r-   r-   r.   r     s   zPylock.__init__r4   r5   r   c                 C  s   | t |ttdt|ttdt|ttdt|tdt|tdt|tdt|tt	dt
|tdt|td	d
	}td|j  krDtdk sNn td|j d|jtdkr\td|j |S )Nzlock-versionrM   r   zdependency-groupszdefault-groupsz
created-byr   r   r   )	r   rM   r   r   r   r   r   r   r   12zpylock version z is not supportedz1.0z(pylock minor version %s is not supported)rv   rG   r   r}   r   r   ro   rf   ru   r   r   r   rc   r   r   r&   _loggerwarning)r7   r4   Zpylockr-   r-   r.   r8     s(   




 zPylock._from_dictc                C  s
   |  |S )zCreate and validate a Pylock instance from a TOML dictionary.

        Raises :class:`PylockValidationError` if the input data is not
        spec-compliant.
        )r8   r6   r-   r-   r.   	from_dict  s   
zPylock.from_dictc                 C  s   t j| tdS )z1Convert the Pylock instance to a TOML dictionary.)dict_factory)dataclassesasdictrW   r   r-   r-   r.   to_dict  r   zPylock.to_dictc                 C  s   |  |   dS )zqValidate the Pylock instance against the specification.

        Raises :class:`PylockValidationError` otherwise.N)r   r   r   r-   r-   r.   validate  s   zPylock.validate)environmenttagsr   r   r   Environment | Noner   Sequence[Tag] | NoneCollection[str] | NonefIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]]c                c  sH   t |pt }tdt|pi t|pg t|du r| jpg n|d}|r)|d nt d }| jrD| j|sDt	d|dt
| j| jr_| jD ]}|jtd|pSi dd	rZ nqJt	d
i }	t| jD ]N\}
}|jrv|jj|dd	svqf|jr|j|st	d|dt
|jd|jd|
 d	|j|	v rt	d|jd|
 d|	|j d  d|
|f|	|j< qf|	 D ]h\}
}|jdur||jfV  q|jdur||jfV  q|jdur||jfV  q|jrt|dd |jD d}|r||fV  q|jdur||jfV  qt	d|jd|
 d|jdur ||jfV  qtdS )a  Select what to install from the lock file.

        The *environment* and *tags* parameters represent the environment being
        selected for. If unspecified, ``packaging.markers.default_environment()`` and
        ``packaging.tags.sys_tags()`` are used.

        The *extras* parameter represents the extras to install.

        The *dependency_groups* parameter represents the groups to install. If
        unspecified, the default groups are used.

        This method must be used on valid Pylock instances (i.e. one obtained
        from :meth:`Pylock.from_dict` or if constructed manually, after calling
        :meth:`Pylock.validate`).
        zdict[str, str | frozenset[str]]N)r   r   python_full_versionzpython_full_version zI in provided environment does not satisfy the Python version requirement zdict[str, str]requirementr^   zXProvided environment does not satisfy any of the environments specified in the lock fileZ	lock_filez for package z at packages[rj   z Multiple packages with the name z are selected at packages[z] and packages[r   c                 s  s"    | ]}|t |jd  fV  qdS )r   N)r   r   )rN   r   r-   r-   r.   r   p  s
    
z Pylock.select.<locals>.<genexpr>z6No wheel found matching the provided tags for package z'], and no sdist available as a fallback)r   r   r   dict	frozensetr   r   r   containsr   rG   rM   evaluaterl   r   r   rB   r   r   r   r   r   nextr   NotImplementedError)r   r   r   r   r   Zcompatible_tags_selectorenvZenv_python_full_versionZ
env_markerZselected_packages_by_nameZpackage_indexr   Z
best_wheelr-   r-   r.   select  s    

	

	



	zPylock.select)r   r   rM   r   r   r   r   r   r   r   r   r   r   rG   r   r   r   r   r)   r   r9   )r)   r5   )r)   r   )
r   r   r   r   r   r  r   r  r)   r  )r:   r;   r<   r   r   rM   r   r   r   r   r   r   r=   r8   r   r   r   r  r-   r-   r-   r.   r%     s:   
 

	r%   )r)   r*   )r@   r   r)   rA   )rF   rG   r)   rG   )rF   rG   rL   r   r)   r   )rS   rT   r)   rU   )r4   r5   rX   rY   rF   rG   r)   rZ   )r4   r5   rX   rY   rF   rG   r)   r1   )r4   r5   rg   rY   rF   rG   r)   rh   )
r4   r5   rX   rY   rp   rq   rF   rG   r)   rr   )
r4   r5   rX   rY   rp   rq   rF   rG   r)   r2   )
r4   r5   rg   rY   rw   rq   rF   rG   r)   rx   )r4   r5   rp   r~   rF   rG   r)   r   )r4   r5   rw   r~   rF   rG   r)   r   )r4   r5   rw   r~   rF   rG   r)   r   )rB   rG   r)   r   )r@   r   r   r   r)   r   )r@   r   r)   r   )r   r   r)   r   )r   r5   r)   r5   )S
__future__r   r   loggingrecollections.abcr   r   r   r   typingr   r   r	   r
   r   r   urllib.parser   markersr   r   r   
specifiersr   r   r   r   utilsr   r   r   r   r   r   r   r   pathlibr   Ztyping_extensionsr   r   	getLoggerr:   r   r,   r/   r1   r2   r3   r>   compilerC   r(   rK   rR   rW   rc   rf   ro   ru   rv   r}   r   r   r   r   r   r   r   r   rs   r'   re   r&   r   r#   r!   r    r"   r$   r   r%   r-   r-   r-   r.   <module>   s     























(

(
0
0 
