Ë
    tPêj_  ã                   óÞ   — d Z ddlZddlmZ ddlmZ ddl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  ej(                  e«      Z G d
„ de«      Z G d„ de«      Z G d„ de
«      Zy)z0
Collect dependencies from `pylock.toml` files.
é    N)ÚIterator)ÚPath)ÚVersion)ÚDependencyFixErrorÚDependencySourceÚDependencySourceError)ÚResolvedFixVersion)Ú
DependencyÚResolvedDependency)ÚSkippedDependencyc                   óz   — e Zd ZdZdee   ddfd„Zdee   fd„Z	dedee   fd„Z
d	ee   dee   fd
„Zdeddfd„Zy)ÚPyLockSourcezM
    Wraps `pylock.*.toml` dependency collection as a dependency source.
    Ú	filenamesÚreturnNc                 ó   — || _         y)zv
        Create a new `PyLockSource`.

        `filenames` provides a list of `pylock.*.toml` files to parse.
        N)Ú
_filenames)Úselfr   s     úh/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pip_audit/_dependency_source/pylock.pyÚ__init__zPyLockSource.__init__   s   € ð $ˆ�ó    c              #   ód   K  — | j                   D ]  }| j                  |«      E d{  –—†  Œ y7 Œ­w)z‰
        Collect all of the dependencies discovered by this `PyLockSource`.

        Raises a `PyLockSourceError` on any errors.
        N)r   Ú_collect_from_file)r   Úfilenames     r   ÚcollectzPyLockSource.collect"   s2   è ø€ ð Ÿ™ò 	9ˆHØ×.Ñ.¨xÓ8×8Ñ8ñ	9Ø8ús   ‚$0¦.§0r   c              #   ó0  K  — 	 |j                  d¬«      5 }t        j                  |«      }ddd«       j                  d«      }|st	        |› d�«      ‚t        |«      }|j                  dk7  rt	        |› d|› d	�«      ‚|j                  d
«      }|st	        |› d�«      ‚	 | j                  |«      E d{  –—†  y# 1 sw Y   Œ‘xY w# t        j                  $ r}t	        |› d�«      |‚d}~ww xY w7 Œ;# t        $ r}t	        |› d|› �«      |‚d}~ww xY w­w)z
        Collect dependencies from a single `pylock.*.toml` file.

        Raises a `PyLockSourceError` on any errors.
        Úrb)ÚmodeNz: invalid TOML in lockfilezlock-versionz": missing lock-version in lockfileé   z: lockfile version z is not supportedÚpackagesz: missing packages in lockfilez: )	ÚopenÚtomliÚloadÚTOMLDecodeErrorÚPyLockSourceErrorÚgetr   ÚmajorÚ_collect_from_packages)r   r   ÚfÚpylockÚeÚlock_versionr   s          r   r   zPyLockSource._collect_from_file+   s,  è ø€ ð	TØ—‘ D�Ó)ð '¨QÜŸ™ A›�÷'ð
 —z‘z .Ó1ˆÙÜ# x jÐ0RÐ$SÓTÐTä˜|Ó,ˆØ×Ñ Ò"Ü# x jÐ0CÀLÀ>ÐQbÐ$cÓdÐdà—:‘:˜jÓ)ˆÙÜ# x jÐ0NÐ$OÓPÐPð	?Ø×2Ñ2°8Ó<×<Ñ<÷%'ð 'ûä×$Ñ$ò 	TÜ# x jÐ0JÐ$KÓLÐRSÐSûð	Túð  =ùÜ ò 	?Ü# x j°°1°#Ð$6Ó7¸QÐ>ûð	?üst   ‚D„C –B<¬C ´A-DÂ"C4 Â6C2Â7C4 Â;DÂ<CÃC ÃC/ÃC*Ã*C/Ã/DÃ2C4 Ã4	DÃ=DÄDÄDr   c              #   óè   K  — t        |«      D ]`  \  }}|j                  d«      }|st        d|› d�«      ‚|j                  d«      }|rt        |t	        |«      «      –— ŒSt        |d«      –— Œb y­w)zt
        Collect dependencies from a list of packages.

        Raises a `PyLockSourceError` on any errors.
        Únamezinvalid package #z	: no nameÚversionzno version specifiedN)Ú	enumerater%   r$   r   r   r   )r   r   ÚidxÚpackager-   r.   s         r   r'   z#PyLockSource._collect_from_packagesH   s{   è ø€ ô & hÓ/ò 	F‰LˆC�Ø—;‘;˜vÓ&ˆDÙÜ'Ð*;¸C¸5À	Ð(JÓKÐKà—k‘k )Ó,ˆGÙÜ(¨¬w°wÓ/?Ó@Ó@ô (¨Ð.DÓEÓEñ	Fùs   ‚A0A2Úfix_versionc                 ó   — t        d«      ‚)zÀ
        Raises `NotImplementedError` if called.

        We don't support fixing dependencies in lockfiles, since
        lockfiles should be managed/updated by their packaging tool.
        zOlockfiles cannot be fixed directly; use your packaging tool to perform upgrades)ÚNotImplementedError)r   r2   s     r   ÚfixzPyLockSource.fix[   s   € ô "Ø]ó
ð 	
r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úlistr   r   r   r
   r   r   Údictr'   r	   r5   © r   r   r   r      sz   „ ñð$ $ t¡*ð $°ó $ð9˜ *Ñ-ó 9ð?¨4ð ?°H¸ZÑ4Hó ?ð:F¨t°D©zð F¸hÀzÑ>Ró Fð&

Ð1ð 

°dô 

r   r   c                   ó   — e Zd ZdZy)r$   z2A pylock-parsing specific `DependencySourceError`.N©r6   r7   r8   r9   r<   r   r   r$   r$   h   s   „ Ù<àr   r$   c                   ó   — e Zd ZdZy)ÚPyLockFixErrorz.A pylock-fizing specific `DependencyFixError`.Nr>   r<   r   r   r@   r@   n   s   „ Ù8àr   r@   )r9   ÚloggingÚcollections.abcr   Úpathlibr   r!   Úpackaging.versionr   Úpip_audit._dependency_sourcer   r   r   Úpip_audit._fixr	   Úpip_audit._servicer
   r   Úpip_audit._service.interfacer   Ú	getLoggerr6   Úloggerr   r$   r@   r<   r   r   ú<module>rK      sf   ðñó Ý $Ý ã Ý %ç dÑ dÝ -ß =Ý :à	ˆ×	Ñ	˜8Ó	$€ôQ
Ð#ô Q
ôh	Ð-ô 	ô	Ð'õ 	r   