
    ܖi_                         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     g/var/www/html/content-pipeline/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       	9H..x888	98s   $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'
 zz.1#xj0R$STT|,"#xj0CL>Qb$cdd::j)#xj0N$OPP	?228<<<%' '$$ 	T#xj0J$KLRSS	T  =  	?#xj1#$67Q>	?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LC;;v&D'*;C5	(JKKkk),G(ww/?@@ (.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 ?HZ4H ?:FtDz Fhz>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   