Ë
    tPêjÞY  ã                  óì  — d Z ddlmZ 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	 ddl
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mZ ddlmZ ddl m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z0 ddl.m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z:  ejv                  «         ejx                  e=«      Z> ejx                  d«      Z?e?j�                  ej‚                  j…                  dd«      j‡                  «       «       ed'd„«       ZDejŠ                   G d„ deFejŽ                  «      «       ZHejŠ                   G d„ deFejŽ                  «      «       ZIejŠ                   G d„ deFejŽ                  «      «       ZJejŠ                   G d„ deFejŽ                  «      «       ZKejŠ                   G d„ d eFejŽ                  «      «       ZLd(d!„ZMd)d"„ZNd*d#„ZOd+d$„ZP	 	 	 	 	 	 	 	 	 	 	 	 d,d%„ZQd-d&„ZRy).z+
Command-line entrypoints for `pip-audit`.
é    )ÚannotationsN)ÚIterator)Ú	ExitStackÚcontextmanager)ÚPath)ÚIOÚNoReturnÚcast)Ú__version__)ÚAuditOptionsÚAuditor)ÚDependencySourceÚDependencySourceErrorÚ	PipSourceÚPyProjectSourceÚRequirementSource)ÚPyLockSource)ÚResolvedFixVersionÚSkippedFixVersionÚresolve_fix_versions)ÚColumnsFormatÚCycloneDxFormatÚ
JsonFormatÚMarkdownFormatÚVulnerabilityFormat)ÚEcosystemsServiceÚ
OsvServiceÚPyPIService)ÚConnectionError)Ú
DependencyÚResolvedDependencyÚSkippedDependencyÚVulnerabilityResultÚVulnerabilityService)ÚAuditSpinnerÚ
AuditState)Úassert_neverÚ	pip_auditÚPIP_AUDIT_LOGLEVELÚINFOc              #  ó    K  — t        | «      dv rt        j                  –— y| j                  d«      5 }|–— ddd«       y# 1 sw Y   yxY w­w)zé
    A context managing wrapper for pip-audit's `--output` flag. This allows us
    to avoid `argparse.FileType`'s "eager" file creation, which is generally
    the wrong/unexpected behavior when dealing with fallible processes.
    >   Ústdoutú-ÚwN)ÚstrÚsysr,   Úopen)ÚnameÚios     úS/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pip_audit/_cli.pyÚ
_output_ior5   8   sD   è ø€ ô ˆ4ƒy�OÑ#Ü�j‰jÓà�Y‰Y�s‹^ð 	˜rØŠH÷	÷ 	ñ 	üs   ‚2A´A¹	AÁAÁAc                  ó4   — e Zd ZdZdZdZdZdZdZd
d„Z	dd„Z
y	)ÚOutputFormatChoicez:
    Output formats supported by the `pip-audit` CLI.
    ÚcolumnsÚjsonzcyclonedx-jsonzcyclonedx-xmlÚmarkdownc                ó¦  — | t         j                  u rt        ||«      S | t         j                  u rt	        ||«      S | t         j
                  u r$t        t        j                  j                  ¬«      S | t         j                  u r$t        t        j                  j                  ¬«      S | t         j                  u rt        ||«      S t        | «       y )N)Úinner_format)r7   ÚColumnsr   ÚJsonr   ÚCycloneDxJsonr   ÚInnerFormatÚCycloneDxXmlÚXmlÚMarkdownr   r'   )ÚselfÚoutput_descÚoutput_aliasess      r4   Ú	to_formatzOutputFormatChoice.to_formatR   sª   € ØÔ%×-Ñ-Ñ-Ü  ¨nÓ=Ð=ØÔ'×,Ñ,Ñ,Ü˜k¨>Ó:Ð:ØÔ'×5Ñ5Ñ5Ü"´×0KÑ0K×0PÑ0PÔQÐQØÔ'×4Ñ4Ñ4Ü"´×0KÑ0K×0OÑ0OÔPÐPØÔ'×0Ñ0Ñ0Ü! +¨~Ó>Ð>ä˜Õó    c                ó   — | j                   S ©N©Úvalue©rD   s    r4   Ú__str__zOutputFormatChoice.__str__`   ó   € Ø�z‰zÐrH   N)rE   ÚboolrF   rP   Úreturnr   ©rQ   r/   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r=   r>   r?   rA   rC   rG   rN   © rH   r4   r7   r7   F   s,   „ ñð €GØ€DØ$€MØ"€LØ€HóôrH   r7   c                  ó$   — e Zd ZdZdZdZdZdd„Zy)ÚVulnerabilityServiceChoicezA
    Python vulnerability services supported by `pip-audit`.
    ÚosvÚpypiÚesmsc                ó   — | j                   S rJ   rK   rM   s    r4   rN   z"VulnerabilityServiceChoice.__str__n   rO   rH   NrR   )rS   rT   rU   rV   ÚOsvÚPypiÚEsmsrN   rW   rH   r4   rY   rY   d   s   „ ñð €CØ€DØ€DôrH   rY   c                  ó,   — e Zd ZdZdZdZdZdd„Zd	d„Zy)
ÚVulnerabilityDescriptionChoicez^
    Whether or not vulnerability descriptions should be added to the `pip-audit` output.
    ÚonÚoffÚautoc                óÀ   — | t         j                  u ry| t         j                  u ry| t         j                  u rt	        |t
        j                  u «      S t        | «       y ©NTF)rb   ÚOnÚOffÚAutorP   r7   r>   r'   ©rD   Úformat_s     r4   Úto_boolz&VulnerabilityDescriptionChoice.to_bool|   sT   € ØÔ1×4Ñ4Ñ4ØØÔ3×7Ñ7Ñ7ØØÔ3×8Ñ8Ñ8Ü˜Ô#5×#:Ñ#:Ð:Ó;Ð;ä˜ÕrH   c                ó   — | j                   S rJ   rK   rM   s    r4   rN   z&VulnerabilityDescriptionChoice.__str__†   rO   rH   N©rl   r7   rQ   rP   rR   ©	rS   rT   rU   rV   rh   ri   rj   rm   rN   rW   rH   r4   rb   rb   r   ó"   „ ñð 
€BØ
€CØ€DóôrH   rb   c                  ó,   — e Zd ZdZdZdZdZdd„Zd	d„Zy)
ÚVulnerabilityAliasChoicezY
    Whether or not vulnerability aliases should be added to the `pip-audit` output.
    rc   rd   re   c                óÀ   — | t         j                  u ry| t         j                  u ry| t         j                  u rt	        |t
        j                  u «      S t        | «       y rg   )rs   rh   ri   rj   rP   r7   r>   r'   rk   s     r4   rm   z VulnerabilityAliasChoice.to_bool”   sT   € ØÔ+×.Ñ.Ñ.ØØÔ-×1Ñ1Ñ1ØØÔ-×2Ñ2Ñ2Ü˜Ô#5×#:Ñ#:Ð:Ó;Ð;ä˜ÕrH   c                ó   — | j                   S rJ   rK   rM   s    r4   rN   z VulnerabilityAliasChoice.__str__ž   rO   rH   Nro   rR   rp   rW   rH   r4   rs   rs   Š   rq   rH   rs   c                  ó(   — e Zd ZdZdZdZdd„Zdd„Zy)	ÚProgressSpinnerChoicezG
    Whether or not `pip-audit` should display a progress spinner.
    rc   rd   c                ó&   — | t         j                  u S rJ   )rw   rh   rM   s    r4   Ú__bool__zProgressSpinnerChoice.__bool__«   s   € ØÔ,×/Ñ/Ð/Ð/rH   c                ó   — | j                   S rJ   rK   rM   s    r4   rN   zProgressSpinnerChoice.__str__®   rO   rH   N)rQ   rP   rR   )rS   rT   rU   rV   rh   ri   ry   rN   rW   rH   r4   rw   rw   ¢   s   „ ñð 
€BØ
€Có0ôrH   rw   c                ó>   — | › ddj                  d„ |D «       «      › d�S )zC
    Render a `--help`-style string for the given enumeration.
    z (choices: ú, c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrJ   )r/   )Ú.0Úvs     r4   ú	<genexpr>z_enum_help.<locals>.<genexpr>¶   s   è ø€ Ò':°1¬¨A¯Ñ':ùs   ‚ú))Újoin)ÚmsgÚes     r4   Ú
_enum_helpr…   ²   s'   € ð ˆU�+˜dŸi™iÑ':¸Ô':Ó:Ð;¸1Ð=Ð=rH   c                óX   — t         j                  | «       t        j                  d«       y)zB
    Log a fatal error to the standard error stream and exit.
    é   N)ÚloggerÚerrorr0   Úexit)rƒ   s    r4   Ú_fatalr‹   ¹   s   € ô ‡L�L�ÔÜ‡H�HˆQ…KrH   c                 ó  — t        j                  ddt         j                  ¬«      } | j                  «       }| j	                  ddddt
        › �¬«       | j	                  d	d
dd¬«       |j	                  ddt        dddd¬«       |j	                  dt        dd¬«       | j	                  ddd¬«       | j	                  ddt        t        t        j                  j                  dt        j                  «      dt        dt        «      ¬ «       | j	                  d!d"t        t        t        j                  j                  d#t        j                  «      d$t        d%t        «      ¬ «       | j	                  d&t        d'd(t        j                  j                  d)t         j"                  «      d*¬+«       | j	                  d,d-dd.¬«       | j	                  d/d0dd1¬«       | j	                  d2t$        t$        dt$        j&                  t        j                  j                  d3t$        j(                  «      d4¬5«       | j	                  d6t*        t*        dt*        j&                  t*        j(                  d7¬5«       | j	                  d8t        d9¬:«       | j	                  d;t,        t,        t        j                  j                  d<t,        j&                  «      d=¬>«       | j	                  d?t.        d@dA¬B«       |j	                  dCt        dDddEg dF¬G«       | j	                  dHdIdJdKdL¬M«       | j	                  dNddO¬«       | j	                  dPddQ¬«       | j	                  dRt        dS¬:«       | j	                  dTt        dUddVg dW¬G«       | j	                  dXddY¬«       | j	                  dZdd[¬«       | j	                  d\d]t        d^d_t        j                  j                  d`da«      ¬b«       | j	                  dct        ddddeg df¬G«       | j	                  dgddh¬«       | S )iNz	pip-auditzHaudit the Python environment for dependencies with known vulnerabilities)ÚprogÚdescriptionÚformatter_classz-Vz	--versionÚversionz	%(prog)s )Úactionr�   z-lz--localÚ
store_truez;show only results for dependencies in the local environment)r‘   Úhelpz-rz--requirementÚREQUIREMENTÚappendÚrequirementszIaudit the given requirements file; this option can be used multiple times)ÚtypeÚmetavarr‘   Údestr“   Úproject_pathú?z.audit a local Python project at the given path)r—   Únargsr“   z--lockedzeaudit lock files from the local Python project. This flag only applies to auditing from project pathsz-fz--formatÚPIP_AUDIT_FORMATÚFORMATz#the format to emit audit results in)r—   ÚchoicesÚdefaultr˜   r“   z-sz--vulnerability-serviceÚPIP_AUDIT_VULNERABILITY_SERVICEÚSERVICEz7the vulnerability service to audit dependencies againstz	--osv-urlÚOSV_URLÚosv_urlÚPIP_AUDIT_OSV_URLz1URL to use for the OSV API instead of the default)r—   r˜   r™   r    r“   z-dz	--dry-runz”without `--fix`: collect all dependencies but do not perform the auditing step; with `--fix`: perform the auditing step but do not perform any fixesz-Sz--strictzFfail the entire audit if dependency collection fails on any dependencyz--descÚPIP_AUDIT_DESCz¨include a description for each vulnerability; `auto` defaults to `on` for the `json` format. This flag has no effect on the `cyclonedx-json` or `cyclonedx-xml` formats.)r—   rŸ   rœ   Úconstr    r“   z	--aliasesz¥includes alias IDs for each vulnerability; `auto` defaults to `on` for the `json` format. This flag has no effect on the `cyclonedx-json` or `cyclonedx-xml` formats.z--cache-dirzTthe directory to use as an HTTP cache for PyPI; uses the `pip` HTTP cache by default)r—   r“   z--progress-spinnerÚPIP_AUDIT_PROGRESS_SPINNERzdisplay a progress spinner)r—   rŸ   r    r“   z	--timeouté   zset the socket timeout)r—   r    r“   z--pathÚPATHÚpathszirestrict to the specified installation path for auditing packages; this option can be used multiple times)r—   r˜   r‘   r™   r    r“   z-vz	--verboseÚcountr   zNrun with additional debug logging; supply multiple times to increase verbosity)r‘   r    r“   z--fixz=automatically upgrade dependencies with known vulnerabilitiesz--require-hasheszžrequire a hash to check each requirement against, for repeatable audits; this option is implied when any package in a requirements file has a `--hash` option.z--index-urlz©base URL of the Python Package Index; this should point to a repository compliant with PEP 503 (the simple repository API); this will be resolved by pip if not specifiedz--extra-index-urlÚURLÚextra_index_urlszpextra URLs of package indexes to use in addition to `--index-url`; should follow the same rules as `--index-url`z--skip-editablez0don't audit packages that are marked as editablez	--no-depszadon't perform any dependency resolution; requires all requirements are pinned to an exact versionz-oz--outputÚFILEz output results to the given fileÚPIP_AUDIT_OUTPUTr,   )r—   r˜   r“   r    z--ignore-vulnÚIDÚignore_vulnsz_ignore a specific vulnerability by its vulnerability ID; this option can be used multiple timesz--disable-pipzŒdon't use `pip` for dependency resolution; this can only be used with hashed requirements files or if the `--no-deps` flag has been provided)ÚargparseÚArgumentParserÚArgumentDefaultsHelpFormatterÚadd_mutually_exclusive_groupÚadd_argumentr   r   r7   ÚosÚenvironÚgetr=   r…   rY   r_   r/   r   ÚDEFAULT_OSV_URLrb   rh   rj   rs   rw   Úint)ÚparserÚdep_source_argss     r4   Ú_parserr¿   Ã   s”  € Ü×$Ñ$ØØ^Ü ×>Ñ>ô€Fð
 ×9Ñ9Ó;€OØ
×Ñ˜˜k°)ÀyÔQ\ÐP]ÐE^ÐÔ_Ø
×ÑØØØØJð	 ô ð × Ñ ØØÜØØØØXð !ô ð × Ñ ØÜØØ=ð	 !ô ð ×ÑØØð;ð ô ð ×ÑØØÜÜ"Ü—
‘
—‘Ð1Ô3E×3MÑ3MÓNØÜÐ=Ô?QÓRð ô ð ×ÑØØ!Ü'Ü*Ü—
‘
—‘Ð@ÔB\×BaÑBaÓbØÜØEÜ&ó
ð ô ð ×ÑØÜØØÜ—
‘
—‘Ð2´J×4NÑ4NÓOØ@ð ô ð ×ÑØØØðOð	 ô ð ×ÑØØØØUð	 ô ð ×ÑØÜ+Ü.ØÜ,×/Ñ/Ü—
‘
—‘Ð/Ô1O×1TÑ1TÓUðEð ô 
ð ×ÑØÜ%Ü(ØÜ&×)Ñ)Ü(×-Ñ-ðEð ô 
ð ×ÑØÜØcð ô ð
 ×ÑØÜ"Ü%Ü—
‘
—‘Ð;Ô=R×=UÑ=UÓVØ)ð ô ð ×ÑØÜØØ%ð	 ô ð × Ñ ØÜØØØØð1ð !ô 	ð ×ÑØØØØØ]ð ô ð ×ÑØØØLð ô ð
 ×ÑØØðTð ô ð ×ÑØÜðbð ô ð ×ÑØÜØØØØð&ð ô 	ð ×ÑØØØ?ð ô ð
 ×ÑØØðð ô ð ×ÑØØÜØØ/Ü—
‘
—‘Ð1°8Ó<ð ô ð ×ÑØÜØØØØð5ð ô ð ×ÑØØðð ô ð €MrH   c                ó  — | j                  «       }|j                  dk\  rt        j                  d«       |j                  dk\  r#t	        j
                  «       j                  d«       t        j                  d|› �«       |S )Nr‡   ÚDEBUGé   zparsed arguments: )Ú
parse_argsÚverboseÚpackage_loggerÚsetLevelÚloggingÚ	getLoggerrˆ   Údebug)r½   Úargss     r4   Ú_parse_argsrË   �  sh   € Ø×ÑÓ€Dð ‡|�|�qÒÜ×Ñ Ô(Ø‡|�|�qÒÜ×ÑÓ×$Ñ$ WÔ-ä
‡L�LÐ% d VÐ,Ô-à€KrH   c                ó"  — |r[t        | j                  d«      «      }| dz  }|j                  «       r|j                  |«       |st	        d| › �«       t        |«      S | dz  }|j                  «       rt        ||||¬«      S t	        d| › �«       y )Nzpylock.*.tomlzpylock.tomlzno lockfiles found in zpyproject.toml)Ú	index_urlr®   Ústatez*couldn't find a supported project file in )ÚlistÚglobÚis_filer•   r‹   r   r   )rš   rÍ   r®   ÚlockedrÎ   Úall_pylocksÚgeneric_pylockÚpyproject_paths           r4   Ú_dep_source_from_project_pathrÖ   ›  s¢   € ñ Ü˜<×,Ñ,¨_Ó=Ó>ˆØ%¨Ñ5ˆØ×!Ñ!Ô#Ø×Ñ˜~Ô.áÜÐ+¨L¨>Ð:Ô;ä˜KÓ(Ð(ð "Ð$4Ñ4€NØ×ÑÔÜØØØ-Øô	
ð 	
ô Ð7¸°~ÐFÕGrH   c                 óT  — t        «       } t        | «      }|j                  t        j                  u r-t        |j                  |j                  |j                  ¬«      }n‘|j                  t        j                  u r"t        |j                  |j                  ¬«      }nS|j                  t        j                  u r"t        |j                  |j                  ¬«      }nt        |j                  «       |j                  j                  |j                   «      }|j"                  j                  |j                   «      }|j                   j%                  ||«      }|j&                  €|j(                  r| j+                  d«       |j,                  €•|j.                  r| j+                  d«       nw|j0                  r| j+                  d«       nY|j2                  r| j+                  d«       n;|j4                  r| j+                  d«       n|j6                  r| j+                  d	«       |j.                  r!|j4                  rt8        j;                  d
«       |j.                  r%t=        t
        «      rt8        j;                  d«       |j4                  r*t8        j;                  d«       t8        j;                  d«       t?        «       5 }g }|j@                  r|jC                  tE        d«      «       |jG                  tI        |¬«      «      }|j,                  �Š|j,                  D ]!  }	|	jK                  «       rŒtM        d|	› �«       Œ# tO        |j,                  |j.                  |j4                  |j6                  |jP                  |j0                  |j2                  |¬«      }
nq|j&                  �8tS        |j&                  |j0                  |j2                  |j(                  |«      }
n-tU        |jV                  |jX                  |jP                  |¬«      }
t[        t]        |j^                  xr |j`                   ¬«      ¬«      }i }d}d}d}d}tc        |jd                  «      }	 |jg                  |
«      D �][  \  }}|ji                  «       rrtk        tl        |«      }|jn                  r%tM        |jp                  › d|jr                  › �«       n+|ju                  d|jp                  › d|jr                  › �«       |dz  }nltk        tv        |«      }t8        jy                  d|jp                  › d|jz                  › d�«       |ju                  d|jp                  › d|jz                  › d�«       |r=|D �cg c]  }|j}                  |«      rŒ|‘Œ }}|t        |«      t        |«      z
  z  }|}|||<   t        |«      dkD  s�ŒI|dz  }|t        |«      z  }�Œ^ 	 g }d}d}|j`                  �r't‡        |||«      D �]  }|j^                  r¤|ji                  «       rJtk        tˆ        |«      }t8        j‹                  d|jŒ                  jp                  › d|jr                  › �«       nItk        tŽ        |«      }t8        j‹                  d|jŒ                  jp                  › d |jz                  › �«       Œ´|ji                  «       sBtk        tŽ        |«      }	 |
ja                  |«       |dz  }|t        ||jŒ                     «      z  }|jC                  |«       �Œ ddd«       dkD  rÅrd!|› �}nd"}d#|› d$|dk(  rd%nd&› |› d'› d(|dk(  rd)nd*› �	}|j`                  r|d+› d(|dk(  rd%nd&› d'› d(|dk(  rd)nd*› �z  }t‘        |t’        j”                  ¬,«       t—        |j˜                  «      5 }t‘        |j!                  «      |¬,«       ddd«       |k7  rt“        jš                  d«       yyd-}r	|d.|› d/�z  }t‘        |t’        j”                  ¬,«       dkD  s|jœ                  r<t—        |j˜                  «      5 }t‘        |j!                  «      |¬,«       ddd«       yyc c}w # t€        $ r}tM        tƒ        |«      «       Y d}~�Œªd}~wt„        $ r4}t8        j+                  tƒ        |«      «       tM        d«       Y d}~�Œåd}~ww xY w# t€        $ rA}tƒ        |«      }t8        jy                  |«       t‰        |jŒ                  |«      }Y d}~�Œd}~ww xY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒaxY w# 1 sw Y   yxY w)0z1
    The primary entrypoint for `pip-audit`.
    )Ú	cache_dirÚtimeoutr¤   )rØ   rÙ   Nz6The --locked flag can only be used with a project pathzBThe --require-hashes flag can only be used with --requirement (-r)z=The --index-url flag can only be used with --requirement (-r)zCThe --extra-index-url flag can only be used with --requirement (-r)z;The --no-deps flag can only be used with --requirement (-r)z?The --disable-pip flag can only be used with --requirement (-r)z?The --no-deps flag is redundant when used with --require-hasheszˆThe --require-hashes flag with --service osv only enforces hash presence NOT hash validity. Use --service pypi to enforce hash validity.zX--no-deps is supported, but users are encouraged to fully hash their pinned dependencieszbConsider using a tool like `pip-compile`: https://pip-tools.readthedocs.io/en/latest/#using-hasheszCollecting inputs)Úmemberszinvalid requirements input: )Úrequire_hashesÚno_depsÚdisable_pipÚskip_editablerÍ   r®   rÎ   )Úlocalr«   rÞ   rÎ   )Údry_run)Úoptionsr   z: z	Skipping r‡   z	Auditing z (r�   zUTip: your network may be blocking this service. Try another service with `-s SERVICE`zDry run: would have skipped z upgrade because zDry run: would have upgraded z to z
, ignored Ú zFound z known ÚvulnerabilityÚvulnerabilitiesz in ú ÚpackageÚpackagesz and fixed )ÚfilezNo known vulnerabilities foundr|   z ignored)Or¿   rË   Úvulnerability_servicerY   r^   r   rØ   rÙ   r¤   r_   r   r`   r   r'   Údescrm   ÚformatÚaliasesrG   rš   rÒ   r‰   r–   rÛ   rÍ   r®   rÜ   rÝ   rˆ   ÚwarningÚ
isinstancer   Úprogress_spinnerr•   r%   Úenter_contextr&   Úexistsr‹   r   rÞ   rÖ   r   rß   r«   r   r   rà   ÚfixÚsetr²   ÚauditÚ
is_skippedr
   r"   Ústrictr2   Úskip_reasonÚupdate_stater!   rÉ   r�   Ú
has_any_idÚlenr   r/   ÚVulnServiceConnectionErrorr   r   ÚinfoÚdepr   Úprintr0   Ústderrr5   ÚoutputrŠ   Úis_manifest) r½   rÊ   ÚservicerE   rF   Ú	formatterÚstackÚactorsrÎ   ÚreqÚsourceÚauditorÚresultÚ	pkg_countÚ
vuln_countÚ
skip_countÚvuln_ignore_countÚvulns_to_ignoreÚspecÚvulnsr   Úfiltered_vulnsr„   ÚfixesÚfixed_pkg_countÚfixed_vuln_countrò   Údser÷   ÚignoredÚsummary_msgr3   s                                    r4   rô   rô   ¹  s  € ô ‹Y€FÜ�vÓ€Dð ×!Ñ!Ô%?×%CÑ%CÑCÜ t§~¡~¸t¿|¹|ÐUY×UaÑUaÔb‰Ø	×	#Ñ	#Ô'A×'FÑ'FÑ	FÜ¨¯©ÀÇÁÔM‰Ø	×	#Ñ	#Ô'A×'FÑ'FÑ	FÜ#¨d¯n©nÀdÇlÁlÔS‰ä�T×/Ñ/Ô0à—)‘)×#Ñ# D§K¡KÓ0€KØ—\‘\×)Ñ)¨$¯+©+Ó6€NØ—‘×%Ñ% k°>ÓB€Ið ×ÑÐ Ø�;Š;Ø�L‰LÐQÔRð ×ÑÐ Ø×ÒØ�L‰LÐ]Õ^Ø�^Š^Ø�L‰LÐXÕYØ×"Ò"Ø�L‰LÐ^Õ_Ø�\Š\Ø�L‰LÐVÕWØ×ÒØ�L‰LÐZÔ[ð ×Ò˜tŸ|š|Ü�‰ÐXÔYà×Òœz¨'´:Ô>Ü�‰ðEô	
ð
 ‡|‚|Ü�‰ð"ô	
ô 	�‰ðGô	
ô
 
‹ð r"˜ØˆØ× Ò Ø�M‰Mœ,Ð':Ó;Ô<Ø×#Ñ#¤J°vÔ$>Ó?ˆð ×ÑÐ(Ø×(Ñ(ò A�Ø—z‘z•|ÜÐ9¸#¸Ð?Õ@ðAô 'Ø×!Ñ!Ø#×2Ñ2ØŸ™Ø ×,Ñ,Ø"×0Ñ0ØŸ.™.Ø!%×!6Ñ!6Øô	‰Fð ×ÑÐ*ô
 3Ø×!Ñ!Ø—‘Ø×%Ñ%Ø—‘Øó‰Fô Ø—j‘jØ—j‘jØ"×0Ñ0Øô	ˆFô ˜'¬<ÀÇÁÒ@]ÐUY×U]ÑU]ÐQ]Ô+^Ô_ˆà>@ˆØˆ	Øˆ
Øˆ
ØÐÜ˜d×/Ñ/Ó0ˆð	Ø&Ÿ}™}¨VÓ4ó -‘��eØ—?‘?Ô$ÜÔ 1°4Ó8�DØ—{’{Ü $§)¡) ¨B¨t×/?Ñ/?Ð.@ÐAÕBà×*Ñ*¨Y°t·y±y°kÀÀD×DTÑDTÐCUÐ+VÔWØ !‘O‘JäÔ 2°DÓ9�DÜ—L‘L 9¨T¯Y©Y¨K°r¸$¿,¹,¸ÀqÐ!IÔJØ×&Ñ&¨°4·9±9°+¸RÀÇÁ¸~ÈQÐ'OÔPÙ"Ø16Ö%\¨A¸a¿l¹lÈ?Õ>[¢aÐ%\�NÐ%\Ø%¬¨U«´c¸.Ó6IÑ)IÑIÐ%Ø*�EØ$��t‘Ü�u“: ”>Ø ‘N�IØ¤# e£*Ñ,’Jñ'-ðB ˆØˆØÐØ�8‹8Ü+¨G°V¸UÓCó "�Ø—<’<Ø—~‘~Ô'Ü"Ô#4°cÓ:˜ÜŸ™Ø:¸3¿7¹7¿<¹<¸.ð I/Ø/2¯©Ð.?ðAõô
 #Ô#5°sÓ;˜ÜŸ™Ð&CÀCÇGÁGÇLÁLÀ>ÐQUÐVY×VaÑVaÐUbÐ$cÔdØà—~‘~Ô'ÜÔ1°3Ó7�CðFØŸ
™
 3œØ'¨1Ñ,˜Ø(¬C°°s·w±w±Ó,@Ñ@Ð(ð
 —‘˜SÖ!ð/"÷wr"ðh �A‚~ÙØ"Ð#4Ð"5Ð6‰GàˆGð �Z�L Ø",°¢/‰Ð7HÐIØˆi�t˜I˜; a°YÀ!²^©	ÈÐ'TðVð 	ð
 �8Š8ØØÐ.Ð/¨qØ&6¸!Ò&;‘?ÐARÐSð TØ%Ð& aØ /°1Ò 4‘9¸*ÐEðGñˆKô 	ˆk¤§
¡
Õ+Ü˜Ÿ™Ó$ð 	<¨Ü�)×"Ñ" 6¨5Ó1¸Õ;÷	<à˜Ò'Ü�H‰H�Q�Kð (ð 7ˆÙØ˜RÐ 1Ð2°(Ð;Ñ;ˆKäØÜ—‘õ	
ð ˜Š>˜Y×2Ò2Ü˜DŸK™KÓ(ð @¨BÜ�i×&Ñ& v¨uÓ5¸BÕ?÷@ð @ð 3ùòg &]øô %ò 	Ü”3�q“6�NŠNûÜ)ò 	ô �L‰Lœ˜Q›Ô Üð8÷ò ûð		ûôD 1ò FÜ&)¨#£h˜ÜŸ™ [Ô1Ü/°·±¸ÓEžûðFú÷]r"ñ r"ú÷N	<ñ 	<ú÷ @ð @ús²   Ê>A/dÌ.D*dÑDaÕ%aÕ<aÖ 1aÖ3a×	C5dÚ?1b7Û0dÞdà$dáaá	b4áa4á.dá4b4â )b/â)dâ/b4â4dâ7	dã 6c<ã6dã<dädädädäd')r2   r   rQ   zIterator[IO[str]])rƒ   r/   r„   ztype[enum.Enum]rQ   r/   )rƒ   r/   rQ   r	   )rQ   úargparse.ArgumentParser)r½   r  rQ   zargparse.Namespace)rš   r   rÍ   r/   r®   z	list[str]rÒ   rP   rÎ   r&   rQ   r   )rQ   ÚNone)SrV   Ú
__future__r   r³   ÚenumrÇ   r¸   r0   Úcollections.abcr   Ú
contextlibr   r   Úpathlibr   Útypingr   r	   r
   r(   r   Úpip_audit._auditr   r   Úpip_audit._dependency_sourcer   r   r   r   r   Ú#pip_audit._dependency_source.pylockr   Úpip_audit._fixr   r   r   Úpip_audit._formatr   r   r   r   r   Úpip_audit._servicer   r   r   Úpip_audit._service.interfacer   rû   r    r!   r"   r#   r$   Úpip_audit._stater%   r&   Úpip_audit._utilr'   ÚbasicConfigrÈ   rS   rˆ   rÅ   rÆ   r¹   rº   Úupperr5   Úuniquer/   ÚEnumr7   rY   rb   rs   rw   r…   r‹   r¿   rË   rÖ   rô   rW   rH   r4   ú<module>r-     sñ  ðñõ #ã Û Û Û 	Û 
Ý $ß 0Ý ß %Ñ %å !ß 2÷õ õ =ß VÑ V÷õ ÷ JÑ IÝ V÷õ ÷ 6Ý (à €× Ñ Ô Ø	ˆ×	Ñ	˜8Ó	$€ð #�×"Ñ" ;Ó/€Ø × Ñ ˜Ÿ
™
Ÿ™Ð';¸VÓD×JÑJÓLÔ Mð ò
ó ð
ð ‡�ô˜˜dŸi™ió ó ðð: ‡�ô
  d§i¡ió 
ó ð
ð ‡�ô S¨$¯)©)ó ó ðð. ‡�ô˜s D§I¡Ió ó ðð. ‡�ô˜C §¡ó ó ðó>óóGóTðHØðHØ#&ðHØ:CðHØMQðHØZdðHàóHô<S@rH   