§
    ŽŸj]P  ã                   ó²  — 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Zddl	m	Z	 ddl
Z
ddlmZ ddlmZ ddlmZ  ej        d¦  «         ej        d	¦  «        gZd
dgZda G d„ de¦  «        Zed+d„¦   «         Zd,d„Zd„ Zd-defd„Zd„ Zd-d„Zd„ Zd„ Zd.d„Z d-d„Z!d-d„Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(d%„ Z)d&„ Z*d'„ Z+d(„ Z,d)„ Z-e.d*k    r e-¦   «          dS dS )/aœ  pipreqs - Generate pip requirements.txt file based on imports

Usage:
    pipreqs [options] [<path>]

Arguments:
    <path>                The path to the directory containing the application
                          files for which a requirements file should be
                          generated (defaults to the current working
                          directory).

Options:
    --use-local           Use ONLY local package info instead of querying PyPI.
    --pypi-server <url>   Use custom PyPi server.
    --proxy <url>         Use Proxy, parameter will be passed to requests
                          library. You can also just set the environments
                          parameter in your terminal:
                          $ export HTTP_PROXY="http://10.10.1.10:3128"
                          $ export HTTPS_PROXY="https://10.10.1.10:1080"
    --debug               Print debug information
    --ignore <dirs>...    Ignore extra directories, each separated by a comma
    --no-follow-links     Do not follow symbolic links in the project
    --encoding <charset>  Use encoding parameter for file open
    --savepath <file>     Save the list of requirements in the given file
    --print               Output the list of requirements in the standard
                          output
    --force               Overwrite existing requirements.txt
    --diff <file>         Compare modules in requirements.txt to project
                          imports
    --clean <file>        Clean up requirements.txt by removing modules
                          that are not imported in project
    --mode <scheme>       Enables dynamic versioning with <compat>,
                          <gt> or <non-pin> schemes.
                          <compat> | e.g. Flask~=1.1.2
                          <gt>     | e.g. Flask>=1.1.2
                          <no-pin> | e.g. Flask
    --scan-notebooks      Look for imports in jupyter notebook files.
é    )ÚcontextmanagerN)Údocopt)Újson2package)Ú	HTTPError)Ú__version__z^import (.+)$z!^from ((?!\.+).*?) import (?:.*)$z.pyz.pywFc                   ó&   ‡ — e Zd ZdZefˆ fd„	Zˆ xZS )ÚNbconvertNotInstalledzVIn order to scan jupyter notebooks, please install the nbconvert and ipython librariesc                 óJ   •— t          ¦   «                              |¦  «         d S ©N)ÚsuperÚ__init__)ÚselfÚmessageÚ	__class__s     €ú\/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/pipreqs/pipreqs.pyr   zNbconvertNotInstalled.__init__A   s!   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!ó    )Ú__name__Ú
__module__Ú__qualname__Údefault_messager   Ú__classcell__)r   s   @r   r	   r	   <   sJ   ø€ € € € € à`ð ð  /ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "r   r	   Úrc              #   ó˜  K  — | r| dk    rF|rd|v rt           j        }nCd|v rt           j        }n2t          d                     |¦  «        ¦  «        ‚t          | |¦  «        }	 |V — |t           j        t           j        fvr|                     ¦   «          dS dS # |t           j        t           j        fvr|                     ¦   «          w w xY w)aŽ  Open a file or ``sys.stdout`` depending on the provided filename.

    Args:
        filename (str): The path to the file that should be opened. If
            ``None`` or ``'-'``, ``sys.stdout`` or ``sys.stdin`` is
            returned depending on the desired mode. Defaults to ``None``.
        mode (str): The mode that should be used to open the file.

    Yields:
        A file handle.

    ú-r   ÚwzInvalid mode for file: {}N)ÚsysÚstdinÚstdoutÚ
ValueErrorÚformatÚopenÚclose)ÚfilenameÚmodeÚfiles      r   Ú_openr&   E   sÖ   è è € ð ð $�x 3’�Øð 	G�s˜d�{�{Ý”9ˆDˆDØ�Dˆ[ˆ[Ý”:ˆDˆDåÐ8×?Ò?ÀÑEÔEÑFÔFÐFå�H˜dÑ#Ô#ˆðØˆ
ˆ
ˆ
à�œ	¥3¤:Ð.Ð.Ð.Ø�JŠJ‰LŒLˆLˆLˆLð /Ð.øˆ4�œ	¥3¤:Ð.Ð.Ð.Ø�JŠJ‰LŒLˆLˆLð /øøøs   Á"B Â1C	úutf-8Tc                 ó€  ‡‡— t          ¦   «         }t          ¦   «         }g }d}g d¢Š|rkg }|D ]Q}	|                     t          j                             t          j                             |	¦  «        ¦  «        ¦  «         ŒR‰                     |¦  «         t          ¦   «         Št          j        | |¬¦  «        }
|
D �]¸\  }}}ˆfd„|D ¦   «         |d d …<   |                     t          j                             |¦  «        ¦  «         d„ |D ¦   «         }|                     d„ |D ¦   «         ¦  «         ˆfd„|D ¦   «         }|D �]/}t          j         	                    ||¦  «        }t          ||¦  «        }	 t          j        |¦  «        }t          j        |¦  «        D ]u}t          |t          j        ¦  «        r%|j        D ]}|                     |j        ¦  «         ŒŒAt          |t          j        ¦  «        r|                     |j        ¦  «         ŒvŒÓ# t(          $ rQ}|r1t+          j        |¦  «         t/          j        d|z  ¦  «         Y d }~�Œt/          j        d|z  ¦  «         |‚d }~ww xY w�Œºd	„ |D ¦   «         D ]0}|                     d
¦  «        \  }}}|                     |¦  «         Œ1|t          |¦  «        |z  z
  }t/          j        d                     |¦  «        ¦  «         t;          t          d¦  «        d¦  «        5 }d„ |D ¦   «         }d d d ¦  «         n# 1 swxY w Y   t=          ||z
  ¦  «        S )NF)z.hgz.svnz.gitz.toxÚ__pycache__ÚenvÚvenvz.ipynb_checkpoints)Úfollowlinksc                 ó   •— g | ]}|‰v¯|‘Œ	S © r.   )Ú.0ÚdÚignore_dirss     €r   ú
<listcomp>z#get_all_imports.<locals>.<listcomp>~   s#   ø€ Ð;Ð;Ð;˜ a¨{Ð&:Ð&:�1Ð&:Ð&:Ð&:r   c                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS r.   )Úfile_ext_is_allowedÚDEFAULT_EXTENSIONS)r/   r%   s     r   r2   z#get_all_imports.<locals>.<listcomp>�   s)   € Ð\Ð\Ð\˜TÕ.AÀ$ÕHZÑ.[Ô.[Ð\�DÐ\Ð\Ð\r   c                 óX   — g | ]'}t           j                             |¦  «        d          ‘Œ(S ©r   ©ÚosÚpathÚsplitext)r/   r#   s     r   r2   z#get_all_imports.<locals>.<listcomp>‚   s-   € ÐRÐRÐR¸X�2œ7×+Ò+¨HÑ5Ô5°aÔ8ÐRÐRÐRr   c                 ó4   •— g | ]}t          |‰¦  «        ¯|‘ŒS r.   )r4   )r/   ÚfnÚ
extensionss     €r   r2   z#get_all_imports.<locals>.<listcomp>„   s)   ø€ ÐKÐKÐK˜Õ':¸2¸zÑ'JÔ'JÐK�ÐKÐKÐKr   zFailed on file: %sc                 ó   — g | ]}|¯|‘ŒS r.   r.   )r/   Úns     r   r2   z#get_all_imports.<locals>.<listcomp>œ   s   € Ð-Ð-Ð-�q¨1Ð-�Ð-Ð-Ð-r   ú.zFound packages: {0}Ústdlibr   c                 ó6   — h | ]}|                      ¦   «         ’ŒS r.   ©Ústrip©r/   Úxs     r   ú	<setcomp>z"get_all_imports.<locals>.<setcomp>©   s    € Ð%Ð%Ð%˜a�—’‘	”	Ð%Ð%Ð%r   )ÚsetÚappendr9   r:   ÚbasenameÚrealpathÚextendÚget_file_extensionsÚwalkÚjoinÚread_file_contentÚastÚparseÚ
isinstanceÚImportÚnamesÚaddÚnameÚ
ImportFromÚmoduleÚ	ExceptionÚ	tracebackÚ	print_excÚloggingÚwarnÚerrorÚ	partitionÚdebugr    r!   Úlist)r:   ÚencodingÚextra_ignore_dirsÚfollow_linksÚimportsÚraw_importsÚ
candidatesÚignore_errorsÚignore_dirs_parsedÚerO   ÚrootÚdirsÚfilesÚpy_filesÚ	file_nameÚcontentsÚtreeÚnodeÚsubnodeÚexcrX   Úcleaned_nameÚ_ÚpackagesÚfÚdatar>   r1   s                              @@r   Úget_all_importsr|   d   sÀ  øø€ Ý‰eŒe€GÝ‘%”%€KØ€JØ€Mð	ð 	ð 	€Kð ð /ØÐØ"ð 	Mð 	MˆAØ×%Ò%¥b¤g×&6Ò&6µr´w×7GÒ7GÈÑ7JÔ7JÑ&KÔ&KÑLÔLÐLÐLØ×ÒÐ-Ñ.Ô.Ð.å$Ñ&Ô&€JåŒ7�4 \Ð2Ñ2Ô2€DØ!ð ñ Ñˆˆd�EØ;Ð;Ð;Ð;˜dÐ;Ñ;Ô;ˆˆQˆQˆQ‰à×Ò�"œ'×*Ò*¨4Ñ0Ô0Ñ1Ô1Ð1Ø\Ð\ UÐ\Ñ\Ô\ˆØ×ÒÐRÐRÈÐRÑRÔRÑSÔSÐSàKÐKÐKÐK˜eÐKÑKÔKˆàð 	ñ 	ˆIÝœŸš T¨9Ñ5Ô5ˆIÝ(¨°HÑ=Ô=ˆHðÝ”y Ñ*Ô*�ÝœH T™NœNð 5ð 5�DÝ! $­¬
Ñ3Ô3ð 5Ø'+¤zð :ð :˜GØ'ŸOšO¨G¬LÑ9Ô9Ð9Ð9ð:å# D­#¬.Ñ9Ô9ð 5Ø#Ÿš¨¬Ñ4Ô4Ð4øð5øõ ð ð ð Ø ð ÝÔ'¨Ñ,Ô,Ð,Ý”LÐ!5¸	Ñ!AÑBÔBÐBØ�H�H�H‘Hå”MÐ"6¸Ñ"BÑCÔCÐCØ�Iøøøøðøøøñ	ð, .Ð-˜KÐ-Ñ-Ô-ð "ð "ˆð "Ÿ^š^¨CÑ0Ô0Ñˆ�a˜Ø�Š�LÑ!Ô!Ð!Ð!à�#˜j™/œ/¨GÑ3Ñ4€HÝ„MÐ'×.Ò.¨xÑ8Ô8Ñ9Ô9Ð9å	�d�8‰nŒn˜cÑ	"Ô	"ð & aØ%Ð% 1Ð%Ñ%Ô%ˆð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &õ �˜4‘Ñ Ô Ð s1   Å5BHÈ
I/È-I*ÉI*É*I/Ì
L#Ì#L'Ì*L'c                  ó4   — t           rt          dgz   nt          S )Nú.ipynb)Úscan_noteboooksr5   r.   r   r   rN   rN   ®   s   € Ý.=ÐUÕ  
Ñ*Ð*ÕCUÐUr   rq   c                 ó   — t          | t          ¦  «        r?t          | d|¬¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   n)t          | dg¦  «        rt          rt          | |¬¦  «        }|S )Nr   ©rd   r~   )r4   r5   r!   Úreadr   Ú
ipynb_2_py)rq   rd   rz   rr   s       r   rQ   rQ   ²   s¼   € Ý˜9Õ&8Ñ9Ô9ð <Ý�)˜S¨8Ð4Ñ4Ô4ð 	 ¸Ø—v’v‘x”xˆHð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 øå	˜Y¨¨
Ñ	3Ô	3ð <½ð <Ý˜i°(Ð;Ñ;Ô;ˆØ€Os   ¨A	Á	AÁAc                 óP   — t           j                             | ¦  «        d         |v S )Né   r8   )rq   Ú
acceptables     r   r4   r4   »   s"   € ÝŒ7×Ò˜IÑ&Ô& qÔ)¨ZÐ7Ð7r   c                 óx   — t          ¦   «         }|                     | ¦  «        \  }}|                     |¦  «        S )zª

    Args:
        file_name (str): notebook file path to parse as python script
        encoding  (str): encoding of file

    Returns:
        str: parsed string

    )ÚPythonExporterÚfrom_filenameÚencode)rq   rd   ÚexporterÚbodyrx   s        r   rƒ   rƒ   ¿   s8   € õ ÑÔ€HØ×&Ò& yÑ1Ô1�I€Tˆ1à�;Š;�xÑ Ô Ð r   c                 ó€  ‡— t          | d¦  «        5 }t          j        d                     t	          |¦  «        | d                     d„ |D ¦   «         ¦  «        ¬¦  «        ¦  «         d|z   dz   Š|                     d                     ˆfd	„|D ¦   «         ¦  «        dz   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr   z/Writing {num} requirements: {imports} to {file}ú, c                 ó   — g | ]
}|d          ‘ŒS ©rX   r.   rF   s     r   r2   z.generate_requirements_file.<locals>.<listcomp>Ô   s   € Ð?[Ð?[Ð?[ÈaÀÀ&Ä	Ð?[Ð?[Ð?[r   )Únumr%   rg   ú{name}z	{version}ú
c              3   ó\   •K  — | ]&}|d          r ‰j         di |¤Žn dj         di |¤ŽV — Œ'dS )Úversionr’   Nr.   )r    )r/   ÚitemÚfmts     €r   ú	<genexpr>z-generate_requirements_file.<locals>.<genexpr>Ù   si   øè è € ð ð àð '+¨9¤oÐR�
�”
Ð"Ð"˜TÐ"Ð"Ð"¸?¸8¼?Ð;RÐ;RÈTÐ;RÐ;Rðð ð ð ð ð r   )r&   r^   rb   r    ÚlenrP   Úwrite)r:   rg   ÚsymbolÚout_filer—   s       @r   Úgenerate_requirements_filer�   Ð   s2  ø€ Ý	ˆt�SÑ	Ô	ð 
˜XÝŒØ=×DÒDÝ˜‘L”L t°T·Y²YÐ?[Ð?[ÐSZÐ?[Ñ?[Ô?[Ñ5\Ô5\ð Eñ ô ñ	
ô 	
ð 	
ð
 ˜Ñ +Ñ-ˆØ�ŠØ�IŠIð ð ð ð à#ðñ ô ñ ô ð ñ	ñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ’BB3Â3B7Â:B7c                 ó(   — t          d| |¦  «         d S )Nr   )r�   )rg   r›   s     r   Úoutput_requirementsrŸ   á   s   € Ý˜s G¨VÑ4Ô4Ð4Ð4Ð4r   úhttps://pypi.python.org/pypi/c                 óp  — g }| D �]/}	 t          j        d|¦  «         t          j        d                     ||¦  «        |¬¦  «        }|j        dk    rQt          |j        d¦  «        r't          |j         	                    ¦   «         ¦  «        }n;t          |j        ¦  «        }n&|j        dk    rt          |j        |j        ¬¦  «        ‚n%# t          $ r t          j        d|¦  «         Y Œçw xY wt          j        d	||j        |j        |j        ¦  «         |                     ||j        d
œ¦  «         �Œ1|S )NzMImport named "%s" not found locally. Trying to resolve it at the PyPI server.z{0}{1}/json)ÚproxieséÈ   Údecodei,  )Ústatus_codeÚreasonz/Package "%s" does not exist or network problemsz›Import named "%s" was resolved to "%s:%s" package (%s).
Please, verify manually the final list of requirements.txt to avoid possible dependency confusions.©rX   r•   )r^   ÚwarningÚrequestsÚgetr    r¥   ÚhasattrÚcontentr   r¤   r   r¦   rX   Úlatest_release_idÚpypi_urlrJ   )rg   Úpypi_serverÚproxyÚresultr–   Úresponser{   s          r   Úget_imports_infor³   å   sb  € Ø€Fàð Iñ Iˆð	ÝŒOØbØñô ð õ  ”| M×$8Ò$8¸ÀdÑ$KÔ$KÐUZÐ[Ñ[Ô[ˆHØÔ# sÒ*Ð*Ý˜8Ô+¨XÑ6Ô6ð :Ý'¨Ô(8×(?Ò(?Ñ(AÔ(AÑBÔB�D�Då'¨Ô(8Ñ9Ô9�D�DØÔ%¨Ò,Ð,Ý¨HÔ,@ÈÌÐYÑYÔYÐYøøÝð 	ð 	ð 	ÝŒOÐMÈtÑTÔTÐTØˆHð	øøøõ 	Œð7ð ØŒIØÔ"ØŒMñ	
ô 	
ð 	
ð 	�Š˜t°Ô0FÐGÐGÑHÔHÐHÑHØ€Ms   ‰CCÃC-Ã,C-c           
      óX  — g }g d¢}t           j        D �]•}t          j        |¦  «        D �]|\  }}}|D �]q}d|v �rit          j                             ||¦  «        }t          |d| ¬¦  «        5 }|                     t          j        ¦  «        d                              d¦  «        }		 |                     ¦   «          	                    ¦   «                              d¦  «        }
n#  Y d d d ¦  «         Œ½xY wt          ¦   «         }|
D ]%}||vr|	d         |vr|                     |¦  «         Œ&d }t          |	¦  «        d	k    r0|	d	                              d
d¦  «                             dd¦  «        }|                     |	d         ||dœ¦  «         d d d ¦  «         n# 1 swxY w Y   �Œs�Œ~�Œ—|S )N)ÚtestsÚ_testsÚeggÚEGGÚinfoÚ	top_levelr   r�   éÿÿÿÿr   r“   r   r…   z.distÚ z.egg)rX   r•   Úexports)r   r:   r9   rO   rP   r!   ÚsplitÚsepr‚   rE   rc   rJ   r™   Úreplace)rd   ry   Úignorer:   rm   rn   ro   r–   rz   ÚpackageÚtop_level_modulesÚfiltered_top_level_modulesrZ   r•   s                 r   Úget_locally_installed_packagesrÅ     s'  € Ø€HØ6Ð6Ð6€FÝ”ð "ñ "ˆÝ!#¤¨¡¤ð !	ñ !	ÑˆD�$˜Øð  ñ  �Ø $Ð&Ñ&Ýœ7Ÿ<š<¨¨dÑ3Ô3�DÝ˜d C°(Ð;Ñ;Ô;ð ¸qØ"&§*¢*­R¬VÑ"4Ô"4°RÔ"8×">Ò">¸sÑ"CÔ"C˜ð%Ø01·²±´·²Ñ0@Ô0@×0FÒ0FÀtÑ0LÔ0LÐ-Ð-øð%à$ðð ð ñ ô ð ð øøøõ 6:±V´VÐ2à&7ð Jð J˜FØ &¨fÐ 4Ð 4¸7À1¼:ÈVÐ;SÐ;Sà :× AÒ AÀ&Ñ IÔ IÐ Iøà"&˜Ý˜w™<œ<¨!Ò+Ð+Ø&-¨a¤j×&8Ò&8¸À"Ñ&EÔ&E×&MÒ&MÈfÐVXÑ&YÔ&Y˜Gð !Ÿšà(/°¬
Ø+2Ø+Eðð ñô ð ð/ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ùñ ñ!	ðD €Os1   Á-9F	Â'9C!Ã F	Ã!C0Ã#F	Ã0BF	ÆFÆ Fc                 óÈ   ‡— t          ¦   «         }g Š| D ]2}|D ]-}||d         v s||d         k    r‰                     |¦  «         Œ.Œ3ˆfd„t          ‰¦  «        D ¦   «         }|S )Nr½   rX   c                 ó8   •— g | ]\  }}|‰|d z   d…         v¯|‘ŒS )r…   Nr.   )r/   r@   Úir±   s      €r   r2   z$get_import_local.<locals>.<listcomp>?  s3   ø€ ÐPÐPÐP™4˜1˜a¸ÀÈÈAÉÈÈÄÐ8OÐ8O�QÐ8OÐ8OÐ8Or   )rÅ   rJ   Ú	enumerate)rg   rd   Úlocalr–   rÂ   Úresult_uniquer±   s         @r   Úget_import_localrÌ   /  s“   ø€ Ý*Ñ,Ô,€EØ€FØð 'ð 'ˆàð 	'ð 	'ˆGð �w˜yÔ)Ð)Ð)¨T°W¸V´_Ò-DÐ-DØ—’˜gÑ&Ô&Ð&øð	'ð QÐPÐPÐP¥9¨VÑ#4Ô#4ÐPÑPÔP€MàÐr   c                 ó:  — t          ¦   «         }t          t          d¦  «        d¦  «        5 }t          d„ |D ¦   «         ¦  «        }ddd¦  «         n# 1 swxY w Y   | D ]+}|                     |                     ||¦  «        ¦  «         Œ,t          |d„ ¬¦  «        S )z¶Get PyPI package names from a list of imports.

    Args:
        pkgs (List[str]): List of import names.

    Returns:
        List[str]: The corresponding PyPI package names.

    Úmappingr   c              3   ód   K  — | ]+}|                      ¦   «                              d ¦  «        V — Œ,dS )ú:N)rE   r¾   rF   s     r   r˜   z get_pkg_names.<locals>.<genexpr>P  s6   è è € Ð4Ð4¨Q�A—G’G‘I”I—O’O CÑ(Ô(Ð4Ð4Ð4Ð4Ð4Ð4r   Nc                 ó*   — |                       ¦   «         S r   ©Úlower)Úss    r   ú<lambda>zget_pkg_names.<locals>.<lambda>V  s   € ¨¯ª©	¬	€ r   ©Úkey)rI   r!   rP   ÚdictrW   rª   Úsorted)Úpkgsr±   rz   r{   Úpkgs        r   Úget_pkg_namesrÜ   D  sÜ   € õ ‰UŒU€FÝ	�d�9‰oŒo˜sÑ	#Ô	#ð 5 qÝÐ4Ð4°!Ð4Ñ4Ô4Ñ4Ô4ˆð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5àð 'ð 'ˆð 	�
Š
�4—8’8˜C Ñ%Ô%Ñ&Ô&Ð&Ð&å�&Ð1Ð1Ð2Ñ2Ô2Ð2s   ¬AÁAÁAc                 ó4  — d| v rOt           d                              |                      ¦   «         ¦  «        }|r|                     d¦  «        d         } |                      d¦  «        d                              d¦  «        d                              ¦   «         S )Nzimport r   z as rA   )ÚREGEXPÚmatchrE   Úgroupsra   )rX   rß   s     r   Úget_name_without_aliasrá   Y  s|   € Ø�DÐÐÝ�q”	—’ §
¢
¡¤Ñ-Ô-ˆØð 	&Ø—<’< ‘?”? 1Ô%ˆDØ�>Š>˜&Ñ!Ô! !Ô$×.Ò.¨sÑ3Ô3°AÔ6×<Ò<Ñ>Ô>Ð>r   c                 ó†   — t           j                             t           j                             t          ¦  «        | ¦  «        S r   )r9   r:   rP   ÚdirnameÚ__file__)rz   s    r   rP   rP   a  s&   € ÝŒ7�<Š<�œŸš­Ñ1Ô1°1Ñ5Ô5Ð5r   c           	      óö  ‡
— g }g d¢}	 t          | d¦  «        }	 d„ |                     ¦   «         D ¦   «         }|                     ¦   «          n†# |                     ¦   «          w xY w# t          $ r* t	          d| › d�¦  «         t          j        d¦  «         Y n:t          $ r.}t          j	        d| › dt          |¦  «        › �¦  «         |‚d	}~ww xY wd
„ |D ¦   «         }|D ]—Š
t          ˆ
fd„|D ¦   «         ¦  «        s|                     ‰
d	dœ¦  «         ‰
D ]_}||v rY‰
                     |¦  «        }|d         }|d                              dd¦  «        }	||	dœ}||vr|                     |¦  «          nŒ`Œ˜|S )u9  Parse a requirements formatted file.

    Traverse a string until a delimiter is detected, then split at said
    delimiter, get module name by element index, create a dict consisting of
    module:version, and add dict to list of parsed modules.

    If file Â´file_Â´ is not found in the system, the program will print a
    helpful message and end its execution immediately.

    Args:
        file_: File to parse.

    Raises:
        OSerror: If there's any issues accessing the file.

    Returns:
        list: The contents of the file, excluding comments.
    )ú<ú>ú=ú!ú~r   c                 óB   — g | ]}|d k    ¯|                      ¦   «         ‘ŒS )r“   rD   rF   s     r   r2   z&parse_requirements.<locals>.<listcomp>‡  s%   € ÐBÐBÐB !¸¸Tº	¸	�A—G’G‘I”I¸	¸	¸	r   zFile z- was not found. Please, fix it and run again.r…   z$There was an error opening the file z: Nc                 óF   — g | ]}|d                                ¦   «         ¯|‘ŒS r7   )ÚisalpharF   s     r   r2   z&parse_requirements.<locals>.<listcomp>‹  s)   € Ð.Ð.Ð.�!˜q œtŸ|š|™~œ~Ð.ˆAÐ.Ð.Ð.r   c                 ó   •— g | ]}|‰v ‘ŒS r.   r.   )r/   ÚyrG   s     €r   r2   z&parse_requirements.<locals>.<listcomp>�  s   ø€ Ð*Ð*Ð*˜q�A˜�FÐ*Ð*Ð*r   r§   r   r»   rè   r¼   )r!   Ú	readlinesr"   ÚFileNotFoundErrorÚprintr   ÚexitÚOSErrorr^   r`   ÚstrÚanyrJ   r¾   rÀ   )Úfile_ÚmodulesÚdelimrz   r{   r`   rï   rZ   Úmodule_nameÚmodule_versionrG   s             @r   Úparse_requirementsrü   e  sÞ  ø€ ð& €Gð &Ð%Ð%€EðÝ�˜ÑÔˆð	ØBÐB q§{¢{¡}¤}ÐBÑBÔBˆDà�GŠG‰IŒIˆIˆIøˆA�GŠG‰IŒIˆIˆIøøøøõ ð ð ð ÝÐJ�eÐJÐJÐJÑKÔKÐKÝŒ�‰ŒˆˆˆÝð ð ð ÝŒÐR¸UÐRÐRÅcÈ%ÁjÄjÐRÐRÑSÔSÐSØˆøøøøðøøøð /Ð.�tÐ.Ñ.Ô.€Dàð ð ˆåÐ*Ð*Ð*Ð* EÐ*Ñ*Ô*Ñ+Ô+ð 	9Ø�NŠN A°$Ð7Ð7Ñ8Ô8Ð8Øð 
	ð 
	ˆAØ�EˆzˆzØŸš ™œ�Ø$ Qœi�Ø!'¨¤×!3Ò!3°C¸Ñ!<Ô!<�Ø"-¸.ÐIÐI�à Ð(Ð(Ø—N’N 6Ñ*Ô*Ð*à�ð øð €Ns(   ‰A& šA ÁA#Á&1CÂ	CÂ")CÃCc                 ó  ‡‡— t          | ¦  «        Šˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         Šˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         Št          ‰¦  «        t          ‰¦  «        z
  }|S )a>  Compare modules in a file to imported modules in a project.

    Args:
        file_ (str): File to parse for modules to be compared.
        imports (tuple): Modules being imported in the project.

    Returns:
        set: The modules not imported in the project, but do exist in the
            specified file.
    c                 ó,   •— g | ]}‰|         d          ‘ŒS r�   r.   )r/   rÈ   rg   s     €r   r2   z#compare_modules.<locals>.<listcomp>­  ó"   ø€ Ð?Ð?Ð? aˆw�qŒz˜&Ô!Ð?Ð?Ð?r   c                 ó,   •— g | ]}‰|         d          ‘ŒS r�   r.   )r/   rÈ   rø   s     €r   r2   z#compare_modules.<locals>.<listcomp>®  rÿ   r   )rü   Úranger™   rI   )r÷   rg   Úmodules_not_importedrø   s    ` @r   Úcompare_modulesr     s~   øø€ õ ! Ñ'Ô'€Gà?Ð?Ð?Ð?­5µ°W±´Ñ+>Ô+>Ð?Ñ?Ô?€GØ?Ð?Ð?Ð?­5µ°W±´Ñ+>Ô+>Ð?Ñ?Ô?€GÝ˜w™<œ<­#¨g©,¬,Ñ6ÐàÐr   c           	      ó°   — t          | |¦  «        }t          j        d                     | d                     d„ |D ¦   «         ¦  «        ¦  «        ¦  «         dS )zFDisplay the difference between modules in a file and imported modules.zBThe following modules are in {} but do not seem to be imported: {}rŽ   c              3   ó   K  — | ]}|V — Œd S r   r.   rF   s     r   r˜   zdiff.<locals>.<genexpr>º  s"   è è € Ð$EÐ$E¨1 QÐ$EÐ$EÐ$EÐ$EÐ$EÐ$Er   N)r  r^   r¹   r    rP   )r÷   rg   r  s      r   Údiffr  ´  s`   € å*¨5°'Ñ:Ô:Ðå„Lð	ßŠV�E˜4Ÿ9š9Ð$EÐ$EÐ0DÐ$EÑ$EÔ$EÑEÔEÑFÔFñô ð ð ð r   c                 óô  — t          | |¦  «        }t          |¦  «        dk    rt          j        d| z   ¦  «         dS t	          j        d                     |¦  «        ¦  «        }g }	 t          | d¦  «        }	 |                     ¦   «         D ],}| 	                    |¦  «        €| 
                    |¦  «         Œ-|                     d¦  «         |                     ¦   «          |D ]}|                     |¦  «         Œ	 |                     ¦   «          nO# |                     ¦   «          w xY w# t          $ r) t          j        d                     | ¦  «        ¦  «         ‚ w xY wt          j        d| z   ¦  «         dS )z9Remove modules that aren't imported in project from file.r   zNothing to clean in Nú|zr+zFailed on file: {}z(Successfully cleaned up requirements in )r  r™   r^   r¹   ÚreÚcompilerP   r!   rð   rß   rJ   ÚseekÚtruncaterš   r"   rô   r`   r    )r÷   rg   r  Ú	re_removeÚto_writerz   rÈ   s          r   Úcleanr  ¾  sx  € å*¨5°'Ñ:Ô:Ðå
ÐÑ Ô  AÒ%Ð%ÝŒÐ+¨eÑ3Ñ4Ô4Ð4Øˆå”
˜3Ÿ8š8Ð$8Ñ9Ô9Ñ:Ô:€IØ€HðÝ�˜ÑÔˆð

	Ø—[’[‘]”]ð 'ð '�Ø—?’? 1Ñ%Ô%Ð-Ø—O’O AÑ&Ô&Ð&øØ�FŠF�1‰IŒIˆIØ�JŠJ‰LŒLˆLàð ð �Ø—’˜‘
”
�
�
ðð �GŠG‰IŒIˆIˆIøˆA�GŠG‰IŒIˆIˆIøøøøõ ð ð ð ÝŒÐ*×1Ò1°%Ñ8Ô8Ñ9Ô9Ð9Øðøøøõ  „LÐ;¸eÑCÑDÔDÐDÐDÐDs   Á'D+ Á8BD ÄD(Ä+3Ec                 óV   — | dk    rd„ |D ¦   «         }d}n| dk    rd}n| dk    rd}||fS )zDEnables dynamic versioning with <compat>, <gt> or <non-pin> schemes.úno-pinc                 ó$   — g | ]}|d          ddœ‘ŒS )rX   r¼   r§   r.   )r/   r–   s     r   r2   z&dynamic_versioning.<locals>.<listcomp>á  s$   € ÐMÐMÐM¸T˜D œL°RÐ8Ð8ÐMÐMÐMr   r¼   Úgtz>=Úcompatz~=r.   )Úschemerg   r›   s      r   Údynamic_versioningr  Þ  sQ   € à�ÒÐØMÐMÀWÐMÑMÔMˆØˆˆØ	�4ŠˆØˆˆØ	�8Ò	Ð	ØˆØ�Fˆ?Ðr   c                  ó†   — t           st          j        d¦  «         d S 	 ddlma d S # t
          $ r t          ¦   «         ‚w xY w)Nz#Not scanning for jupyter notebooks.r   )rˆ   )r   r^   r¹   Ú	nbconvertrˆ   ÚImportErrorr	   r.   r   r   Úhandle_scan_noteboooksr  ê  sd   € Ýð ÝŒÐ:Ñ;Ô;Ð;Øˆð&à,Ð,Ð,Ð,Ð,Ð,Ð,Ð,øÝð &ð &ð &Ý#Ñ%Ô%Ð%ð&øøøs	   Ÿ' §A c                 ó   ‡— |                       d¦  «        }|                       d¦  «        }|                       d¦  «         }|                       dd¦  «        at          ¦   «          | d         }|€d}|€)t          j                             t          j        ¦  «        }|r|                     d¦  «        }| d	         r| d	         nt          j                             |d
¦  «        }| d         sE| d	         s=| d         s5t          j         	                    |¦  «        rt          j        d¦  «         d S t          ||||¬¦  «        }t          |¦  «        }t          j        dd                     |¦  «        z   ¦  «         d}d }| d         r| d         }| d         r| d         | d         dœ}| d         r&t          j        d¦  «         t          ||¬¦  «        }	nHt          j        d¦  «         t          ||¬¦  «        Šˆfd„|D ¦   «         }
‰t!          |
||¬¦  «        z   }	t#          |	d„ ¬¦  «        }	| d         rt%          | d         |	¦  «         d S | d         rt'          | d         |	¦  «         d S | d         r<|                       d¦  «        }|d v rt)          ||	¦  «        \  }	}nt+          d!¦  «        ‚d"}| d         r&t-          |	|¦  «         t          j        d#¦  «         d S t1          ||	|¦  «         t          j        d$|z   ¦  «         d S )%Nz
--encodingz--ignorez--no-follow-linksz--scan-notebooksFz<path>r'   ú,z
--savepathzrequirements.txtz--printz--forcez<requirements.txt already exists, use --force to overwrite it)rd   re   rf   zFound imports: rŽ   r    z--pypi-serverz--proxy)ÚhttpÚhttpsz--use-localz9Getting package information ONLY from local installation.r�   z,Getting packages information from Local/PyPIc                 ó”   •— g | ]D}|                      ¦   «         d „ ‰D ¦   «         vr"|                      ¦   «         d„ ‰D ¦   «         v¯B|‘ŒES )c                 ó(   — g | ]}|d          D ]}|‘ŒŒS )r½   r.   )r/   rG   rï   s      r   r2   z#init.<locals>.<listcomp>.<listcomp>7  s)   € ÐEÐEÐE A¸¸)¼ÐEÐE°1˜aÐEÐEÐEÐEr   c                 ó   — g | ]
}|d          ‘ŒS r�   r.   rF   s     r   r2   z#init.<locals>.<listcomp>.<listcomp>9  s   € Ð7Ð7Ð7¨A˜a œiÐ7Ð7Ð7r   rÒ   )r/   rG   rÊ   s     €r   r2   zinit.<locals>.<listcomp>0  sk   ø€ ð 

ð 

ð 

àð
 �GŠG‰IŒIÐEÐE¨ÐEÑEÔEÐEÐEà�GŠG‰IŒIÐ7Ð7°Ð7Ñ7Ô7Ð7Ð7ð ð 8Ð7Ð7r   )r°   r¯   c                 ó6   — | d                               ¦   «         S )NrX   rÒ   )rG   s    r   rÕ   zinit.<locals>.<lambda>>  s   € ¨A¨f¬I¯OªOÑ,=Ô,=€ r   rÖ   z--diffz--cleanz--mode)r  r  r  zFInvalid argument for mode flag, use 'compat', 'gt' or 'no-pin' insteadz==z Successfully output requirementsz(Successfully saved requirements file in )rª   r   r  r9   r:   ÚabspathÚcurdirr¾   rP   Úexistsr^   r¨   r|   rÜ   rb   rÌ   r³   rÙ   r  r  r  r   rŸ   r¹   r�   )Úargsrd   re   rf   Ú
input_pathr:   ri   r¯   r°   rg   Ú
differencer  r›   rÊ   s                @r   Úinitr)  ö  sy  ø€ à�xŠx˜Ñ%Ô%€HØŸš Ñ,Ô,ÐØ—x’xÐ 3Ñ4Ô4Ð4€Là—h’hÐ1°5Ñ9Ô9€OÝÑÔÐà�h”€JàÐØˆØÐÝ”W—_’_¥R¤YÑ/Ô/ˆ
àð 9Ø-×3Ò3°CÑ8Ô8Ðð # <Ô0Ðbˆˆ\ÔÐµb´g·l²lÀ:ÐOaÑ6bÔ6bð 	ð �ŒOðà�\Ô"ðð �Y”ðõ ŒG�NŠN˜4Ñ Ô ð	õ 	ŒÐYÑZÔZÐZØˆå ØØØ+Ø!ð	ñ ô €Jõ ˜zÑ*Ô*€JÝ„MÐ# d§i¢i°
Ñ&;Ô&;Ñ;Ñ<Ô<Ð<Ø1€KØ€EØˆOÔð ,Ø˜?Ô+ˆàˆI„ð DØ˜iœ°4¸	´?ÐCÐCˆàˆMÔð ]ÝŒÐQÑRÔRÐRÝ" :¸ÐAÑAÔAˆˆåŒÐDÑEÔEÐEÝ  °hÐ?Ñ?Ô?ˆð

ð 

ð 

ð 

àð

ñ 

ô 

ˆ
ð Õ*¨:¸UÐP[Ð\Ñ\Ô\Ñ\ˆå�WÐ"=Ð"=Ð>Ñ>Ô>€GàˆH„~ð ÝˆT�(Œ^˜WÑ%Ô%Ð%ØˆàˆI„ð Ýˆd�9Œo˜wÑ'Ô'Ð'ØˆàˆH„~ð 	Ø—’˜(Ñ#Ô#ˆØÐ/Ð/Ð/Ý0°¸ÑAÔA‰OˆG�V�VåØ[ñô ð ð ˆàˆI„ð HÝ˜G VÑ,Ô,Ð,ÝŒÐ7Ñ8Ô8Ð8Ð8Ð8å" 4¨°&Ñ9Ô9Ð9ÝŒÐ?À$ÑFÑGÔGÐGÐGÐGr   c                  ó  — t          t          t          ¬¦  «        } | d         rt          j        nt          j        }t          j        |d¬¦  «         	 t          | ¦  «         d S # t          $ r t          j
        d¦  «         Y d S w xY w)N)r•   z--debugz%(levelname)s: %(message)s)Úlevelr    r   )r   Ú__doc__r   r^   ÚDEBUGÚINFOÚbasicConfigr)  ÚKeyboardInterruptr   ró   )r&  Ú	log_levels     r   Úmainr2  [  sƒ   € Ý•'¥;Ð/Ñ/Ô/€DØ!% i¤ÐB•”�µg´l€IÝÔ˜iÐ0LÐMÑMÔMÐMðÝˆT‰
Œ
ˆ
ˆ
ˆ
øÝð ð ð ÝŒ�‰Œˆˆˆˆðøøøs   ÁA$ Á$BÂBÚ__main__)Nr   )r'   NT)r'   )r    N)/r,  Ú
contextlibr   r9   r   r	  r^   rR   r\   r   r©   Úyargr   Úyarg.exceptionsr   Úpipreqsr   r
  rÞ   r5   r   r  r	   r&   r|   rN   rõ   rQ   r4   rƒ   r�   rŸ   r³   rÅ   rÌ   rÜ   rá   rP   rü   r  r  r  r  r  r)  r2  r   r.   r   r   ú<module>r8     sÊ  ðð%ð %ðL &Ð %Ð %Ð %Ð %Ð %Ø 	€	€	€	Ø 
€
€
€
Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à Ð Ð Ð Ð Ð à
ˆ"Œ*Ð%Ñ
&Ô
&¨
¨¬
Ð3WÑ(XÔ(XÐ	Y€Ø˜V�_Ð à€ð"ð "ð "ð "ð "˜Kñ "ô "ð "ð ðð ð ñ „ðð<G!ð G!ð G!ð G!ðTVð Vð Vðð  ð ð ð ð ð8ð 8ð 8ð!ð !ð !ð !ð"
ð 
ð 
ð"5ð 5ð 5ðð ð ð ðB&ð &ð &ð &ðRð ð ð ð*3ð 3ð 3ð*?ð ?ð ?ð6ð 6ð 6ð8ð 8ð 8ðv ð  ð  ð(ð ð ðEð Eð Eð@	ð 	ð 	ð	&ð 	&ð 	&ðbHð bHð bHðJð ð ð ˆzÒÐØ€D�F„F€F€F€Fð Ðr   