§
    Á³gÔy  ã            
       óÈ  — d 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Zddlm	Z	 ddl
mZ ddlmZ ddl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mZmZmZmZ dd
lm Z m!Z!m"Z"m#Z# ddl$m%Z& ddl'm(Z( ddl)m*Z* erddl+m,Z, ej-        dk    rddlm.Z. nerddl/m.Z. nddl0m1Z. ee2ef         Z3 ede3¬¦  «        Z4 ej5        e6¦  «        Z7 G d„ de¦  «        Z8dZ9dZ: G d„ de ¦  «        Z; G d„ de.¦  «        Z< G d„ d¦  «        Z= G d„ de=¦  «        Z> G d „ d!¦  «        Z?d"ed#e@fd$„ZAd%ee2         d&ee2e2f         d'ed#e@fd(„ZBd)„ ZCd*e*d#ee2         fd+„ZDd*e*d#ee2         fd,„ZEd%ee2         d&ee2e2f         d-e3d#ee2e2f         fd.„ZFd/e3d#e2fd0„ZGd1ee2e2f         d#ee2         fd2„ZHd%ee2         d1ee2e2f         d#eee2ee2         f                  fd3„ZId1ee2e2f         d#ee2e2f         fd4„ZJd5e2d6e2d7e2d8e2d#e@f
d9„ZKd:e3d#e2fd;„ZLd<e4d#e4fd=„ZMd>e2d#e2fd?„ZN G d@„ dAe#jO        ¦  «        ZPdBZQd>e2dCee2e2f         dDee2ee2         f         d#e2fdE„ZR G dF„ dGeS¦  «        ZT G dH„ dIe"jU        ¦  «        ZVdS )Jaè  
Create a wheel that, when installed, will make the source package 'editable'
(add it to the interpreter's path, including metadata) per PEP 660. Replaces
'setup.py develop'.

.. note::
   One of the mechanisms briefly mentioned in PEP 660 to implement editable installs is
   to create a separated directory inside ``build`` and use a .pth file to point to that
   directory. In the context of this file such directory is referred as
   *auxiliary build directory* or ``auxiliary_dir``.
é    N)Úsuppress)ÚEnum)Úcleandoc)Úchain)ÚPath)ÚTemporaryDirectory)
ÚTYPE_CHECKINGÚDictÚIterableÚIteratorÚListÚMappingÚOptionalÚTupleÚTypeVarÚUnion)ÚCommandÚSetuptoolsDeprecationWarningÚerrorsÚ
namespaces)Úbuild_py©Úfind_package_path)ÚDistribution©Ú	WheelFile)é   é   )ÚProtocol)ÚABCÚ_P)Úboundc                   óJ   — e Zd ZdZdZdZdZedee	         dd fd„¦   «         Z
dS )	Ú_EditableModea  
    Possible editable installation modes:
    `lenient` (new files automatically added to the package - DEFAULT);
    `strict` (requires a new installation when files are added/removed); or
    `compat` (attempts to emulate `python setup.py develop` - DEPRECATED).
    ÚstrictÚlenientÚcompatÚmodeÚreturnc                 óð   — |st           j        S |                     ¦   «         }|t           j        vrt	          j        d|›d�¦  «        ‚|dk    rd}t          j        |t          ¦  «         t           |         S )NzInvalid editable mode: z. Try: 'strict'.ÚCOMPATax  
            The 'compat' editable mode is transitional and will be removed
            in future versions of `setuptools`.
            Please adapt your code accordingly to use either the 'strict' or the
            'lenient' modes.

            For more information, please check:
            https://setuptools.pypa.io/en/latest/userguide/development_mode.html
            )	r$   ÚLENIENTÚupperÚ__members__r   ÚOptionErrorÚwarningsÚwarnr   )Úclsr(   Ú_modeÚmsgs       ú_/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/setuptools/command/editable_wheel.pyÚconvertz_EditableMode.convertG   s}   € àð 	)Ý Ô(Ð(à—
’
‘”ˆØ�Ô1Ð1Ð1ÝÔ$Ð%W¸tÐ%WÐ%WÐ%WÑXÔXÐXà�HÒÐðˆCõ ŒM˜#Õ;Ñ<Ô<Ð<å˜UÔ#Ð#ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚSTRICTr,   r+   Úclassmethodr   Ústrr6   © r7   r5   r$   r$   ;   s_   € € € € € ðð ð €FØ€GØ€Fàð$˜8 Cœ=ð $¨_ð $ð $ð $ñ „[ð$ð $ð $r7   r$   zU
New or renamed files may not be automatically picked up without a new installation.
zt
Options like `package-data`, `include/exclude-package-data` or
`packages.find.exclude/include` may have no effect.
c                   óV  — e Zd ZdZdZdddd eej        pd¦  «        fgZd„ Zd	„ Z	d
„ Z
d„ Zd„ Zdee         fd„Zdedededefd„Zd„ Zdeee         eeef         f         fd„Zdededededeee         eeef         f         f
d„Zd„ Zdefd„Zd„ Zdefd„Zdedededdfd „ZdS )!Úeditable_wheelzkBuild 'editable' wheel for development.
    (This command is reserved for internal use of setuptools).
    z!create a PEP 660 'editable' wheel)z	dist-dir=Údz-directory to put final built distributions in)zdist-info-dir=ÚIz(path to a pre-build .dist-info directoryzmode=NÚ c                 ó>   — d | _         d | _        d | _        d | _        d S ©N)Údist_dirÚdist_info_dirÚproject_dirr(   ©Úselfs    r5   Úinitialize_optionsz!editable_wheel.initialize_optionsv   s$   € ØˆŒØ!ˆÔØˆÔØˆŒ	ˆ	ˆ	r7   c                 óÜ   — | j         }|j        pt          j        | _        |j        pi | _        t          | j        p$t          j         	                    | j        d¦  «        ¦  «        | _        d S )NÚdist)
ÚdistributionÚsrc_rootÚosÚcurdirrI   Úpackage_dirr   rG   ÚpathÚjoin)rK   rN   s     r5   Úfinalize_optionszeditable_wheel.finalize_options|   sX   € ØÔ ˆØœ=Ð5­B¬IˆÔØÔ+Ð1¨rˆÔÝ˜Tœ]ÐT­b¬g¯lªl¸4Ô;KÈVÑ.TÔ.TÑUÔUˆŒˆˆr7   c                 óª  — 	 | j                              d¬¦  «         |                      ¦   «          |                      d¦  «         |                      d¦  «        }|                     | j        ¦  «         |                      |¦  «         d S # t          $ r<}t          j
        ¦   «          d}t          j        t          |¦  «        ¦  «        |‚d }~ww xY w)NT)Úexist_okÚbdist_wheelaœ  
            Support for editable installs via PEP 660 was recently introduced
            in `setuptools`. If you are seeing this error, please report to:

            https://github.com/pypa/setuptools/issues

            Meanwhile you can try the legacy behavior by setting an
            environment variable and trying to install again:

            SETUPTOOLS_ENABLE_FEATURES="legacy-editable"
            )rG   ÚmkdirÚ_ensure_dist_infoÚreinitialize_commandÚget_finalized_commandÚwrite_wheelfilerH   Ú_create_wheel_fileÚ	ExceptionÚ	tracebackÚ	print_excr   ÚInternalErrorr   )rK   rY   Úexr4   s       r5   Úrunzeditable_wheel.run‚   sÜ   € ð	>ØŒM×Ò¨ÐÑ.Ô.Ð.Ø×"Ò"Ñ$Ô$Ð$ð ×%Ò% mÑ4Ô4Ð4Ø×4Ò4°]ÑCÔCˆKØ×'Ò'¨Ô(:Ñ;Ô;Ð;à×#Ò# KÑ0Ô0Ð0Ð0Ð0øÝð 	>ð 	>ð 	>ÝÔÑ!Ô!Ð!ð
ˆCõ Ô&¥x°¡}¤}Ñ5Ô5¸2Ð=øøøøð	>øøøs   ‚BB Â
CÂ7CÃCc                 óf  — | j         €W|                      d¦  «        }| j        |_        |                     ¦   «          |                     ¦   «          |j         | _         d S t          | j         ¦  «                             d¦  «        sJ ‚t          | j         d¦  «         	                    ¦   «         sJ ‚d S )NÚ	dist_infoz
.dist-infoÚMETADATA)
rH   r\   rG   Ú
output_dirÚensure_finalizedre   r>   Úendswithr   Úexists)rK   rg   s     r5   r[   z editable_wheel._ensure_dist_infoœ   s¨   € ØÔÐ%Ø×1Ò1°+Ñ>Ô>ˆIØ#'¤=ˆIÔ Ø×&Ò&Ñ(Ô(Ð(Ø�MŠM‰OŒOˆOØ!*Ô!8ˆDÔÐÐå�tÔ)Ñ*Ô*×3Ò3°LÑAÔAÐAÐAÐAÝ˜Ô*¨JÑ7Ô7×>Ò>Ñ@Ô@Ð@Ð@Ð@Ð@Ð@r7   c                 óò   — | j         }|j        sd S t          | j        | j                             dd¦  «        ¦  «                             ¦   «         }t          ||||¦  «        }|                     ¦   «          d S )NrD   ú.)	rO   Únamespace_packagesr   rI   rS   ÚgetÚresolveÚ_NamespaceInstallerÚinstall_namespaces)rK   Úinstallation_dirÚ
pth_prefixrN   rP   Ú	installers         r5   Ú_install_namespacesz"editable_wheel._install_namespaces§   sw   € àÔ ˆØÔ&ð 	ØˆFå˜Ô(¨$Ô*:×*>Ò*>¸rÀ3Ñ*GÔ*GÑHÔH×PÒPÑRÔRˆÝ'¨Ð.>À
ÈHÑUÔUˆ	Ø×$Ò$Ñ&Ô&Ð&Ð&Ð&r7   r)   c                 óÎ   — | j         rt          | j         ¦  «        j        nt          ¦   «         }t          t          |                     d¦  «        ¦  «        }t          |d ¦  «        S )Nz
*.egg-info)rH   r   ÚparentÚmapr>   ÚglobÚnext)rK   Ú
parent_dirÚ
candidatess      r5   Ú_find_egg_info_dirz!editable_wheel._find_egg_info_dir±   sT   € Ø8<Ô8JÐV•T˜$Ô,Ñ-Ô-Ô4Ð4ÕPTÑPVÔPVˆ
Ý�˜jŸošo¨lÑ;Ô;Ñ<Ô<ˆ
Ý�J Ñ%Ô%Ð%r7   ÚnameÚunpacked_wheelÚ	build_libÚtmp_dirc                 ó¤  — | j         }t          |¦  «        }t          |¦  «        }t          t          ||› d�d¦  «        ¦  «        }t          t          ||› d�d¦  «        ¦  «        }t          t          ||› d�d¦  «        ¦  «        }	|                     dd¬¦  «        }
t          |¦  «        |
_        d|
_        |                     dd¬¦  «        }|                     d	d¬¦  «        }|x|_        x|_        |_        |x|_	        x|_
        |_        |	x|_        |_        ||_        ||_        |                     d
¦  «        }d|_        t          |¦  «        |_        |                     d¦  «        }d|_        |                      ¦   «         |_        |                      ¦   «          |                     ¦   «          |                     ¦   «          dS )aì  Configure commands to behave in the following ways:

        - Build commands can write to ``build_lib`` if they really want to...
          (but this folder is expected to be ignored and modules are expected to live
          in the project directory...)
        - Binary extensions should be built in-place (editable_mode = True)
        - Data/header/script files are not part of the "editable" specification
          so they are written directly to the unpacked_wheel directory.
        z.dataÚdataÚheadersÚscriptsÚegg_infoT)Úreinit_subcommandsÚbuildÚinstallÚinstall_scriptsr   FN)rO   r>   r   r\   Úegg_baseÚignore_egg_info_in_manifestÚbuild_platlibÚbuild_purelibr‚   Úinstall_purelibÚinstall_platlibÚinstall_librŒ   Úbuild_scriptsÚinstall_headersÚinstall_dataÚget_command_objÚno_epÚ
build_tempÚcompiler   Úexisting_egg_info_dirÚ_set_editable_moderj   )rK   r€   r�   r‚   rƒ   rN   Úwheelr…   r†   r‡   rˆ   rŠ   r‹   rŒ   r   s                  r5   Ú_configure_buildzeditable_wheel._configure_build¶   sÅ  € ð Ô ˆÝ�NÑ#Ô#ˆÝ˜	‘N”Nˆ	Ý•4˜¨4¨¨¨¸Ñ?Ô?Ñ@Ô@ˆÝ•d˜>¨d¨>¨>¨>¸9ÑEÔEÑFÔFˆÝ•d˜>¨d¨>¨>¨>¸9ÑEÔEÑFÔFˆð ×,Ò,¨ZÈDÐ,ÑQÔQˆÝ ™LœLˆÔØ/3ˆÔ,à×)Ò)¨'ÀdÐ)ÑKÔKˆØ×+Ò+¨IÈ$Ð+ÑOÔOˆàFOÐOˆÔÐO˜eÔ1°E´OØRWÐWˆÔÐW 'Ô"9¸GÔ<OØ8?Ð?ˆÔ %Ô"5Ø")ˆÔØ#ˆÔà×.Ò.Ð/@ÑAÔAˆØ $ˆÔå˜w™<œ<ˆÔà×'Ò'¨
Ñ3Ô3ˆØ ˆÔØ)-×)@Ò)@Ñ)BÔ)BˆÔ&à×ÒÑ!Ô!Ð!à×ÒÑ Ô Ð Ø× Ò Ñ"Ô"Ð"Ð"Ð"r7   c                 óô   — | j         }|                     d¦  «        }|                     ¦   «         D ]F}|                     |¦  «        }t          |d¦  «        rd|_        Œ/t          |d¦  «        rd|_        ŒGdS )z8Set the ``editable_mode`` flag in the build sub-commandsrŠ   Úeditable_modeTÚinplaceN)rO   r—   Úget_sub_commandsÚhasattrr    r¡   )rK   rN   rŠ   Úcmd_nameÚcmds        r5   rœ   z!editable_wheel._set_editable_modeè   sŒ   € àÔ ˆØ×$Ò$ WÑ-Ô-ˆØ×.Ò.Ñ0Ô0ð 	#ð 	#ˆHØ×&Ò& xÑ0Ô0ˆCÝ�s˜OÑ,Ô,ð #Ø$(�Ô!Ð!Ý˜˜iÑ(Ô(ð #Ø"�”øð	#ð 	#r7   c                 óx  — g }i }|                       d¦  «        }|                     ¦   «         D ]‰}|                       |¦  «        }t          |d¦  «        r)|                     |                     ¦   «         pg ¦  «         t          |d¦  «        r)|                     |                     ¦   «         pi ¦  «         ŒŠ||fS )NrŠ   Úget_outputsÚget_output_mapping)r]   r¢   r£   Úextendr§   Úupdater¨   )rK   ÚfilesÚmappingrŠ   r¤   r¥   s         r5   Ú_collect_build_outputsz%editable_wheel._collect_build_outputsó   sÁ   € ØˆØ"$ˆØ×*Ò*¨7Ñ3Ô3ˆà×.Ò.Ñ0Ô0ð 	?ð 	?ˆHØ×,Ò,¨XÑ6Ô6ˆCÝ�s˜MÑ*Ô*ð 6Ø—’˜SŸ_š_Ñ.Ô.Ð4°"Ñ5Ô5Ð5Ý�sÐ0Ñ1Ô1ð ?Ø—’˜s×5Ò5Ñ7Ô7Ð=¸2Ñ>Ô>Ð>øà�gˆ~Ðr7   Ú	dist_namec                 ó  — |                       ||||¦  «         |                      ¦   «          |                      ¦   «         \  }}|                      d¦  «         |                      d¦  «         |                      d¦  «         ||fS )Nr†   r‡   r…   )rž   Ú_run_build_subcommandsr­   Ú_run_install)rK   r®   r�   r‚   rƒ   r«   r¬   s          r5   Ú_run_build_commandsz"editable_wheel._run_build_commands  s‹   € ð 	×Ò˜i¨¸ÀGÑLÔLÐLØ×#Ò#Ñ%Ô%Ð%Ø×4Ò4Ñ6Ô6‰ˆˆwØ×Ò˜)Ñ$Ô$Ð$Ø×Ò˜)Ñ$Ô$Ð$Ø×Ò˜&Ñ!Ô!Ð!Ø�gˆ~Ðr7   c                 ó  — |                       d¦  «        }|                     ¦   «         D ]`}|                       |¦  «        }|dk    r.t          |¦  «        t          k    r|                      |¦  «         ŒK|                      |¦  «         ŒadS )a}  
        Issue #3501 indicates that some plugins/customizations might rely on:

        1. ``build_py`` not running
        2. ``build_py`` always copying files to ``build_lib``

        However both these assumptions may be false in editable_wheel.
        This method implements a temporary workaround to support the ecosystem
        while the implementations catch up.
        rŠ   r   N)r]   r¢   ÚtypeÚbuild_py_clsÚ_safely_runÚrun_command)rK   rŠ   r€   r¥   s       r5   r°   z%editable_wheel._run_build_subcommands  s˜   € ð ×3Ò3°GÑ<Ô<ˆØ×*Ò*Ñ,Ô,ð 	'ð 	'ˆDØ×,Ò,¨TÑ2Ô2ˆCØ�zÒ!Ð!¥d¨3¡i¤iµ<Ò&?Ð&?Ø× Ò  Ñ&Ô&Ð&Ð&à× Ò  Ñ&Ô&Ð&Ð&ð	'ð 	'r7   r¤   c                 óÀ   — 	 |                       |¦  «        S # t          $ r< t          j        ¦   «         › d|› d|› d�}t	          j        |t          d¬¦  «         Y d S w xY w)Nz„

            If you are seeing this warning it is very likely that a setuptools
            plugin or customization overrides the `z÷` command, without
            taking into consideration how editable installs run build steps
            starting from v64.0.0.

            Plugin authors and developers relying on custom build steps are encouraged
            to update their `aO  ` implementation considering the information in
            https://setuptools.pypa.io/en/latest/userguide/extension.html
            about editable installs.

            For the time being `setuptools` will silence this error and ignore
            the faulty command, but this behaviour will change in future versions.

            é   )Ú
stacklevel)r·   r`   ra   Ú
format_excr0   r1   r   )rK   r¤   r4   s      r5   r¶   zeditable_wheel._safely_run"  s—   € ð	KØ×#Ò# HÑ-Ô-Ð-øÝð 	Kð 	Kð 	KÝ Ô+Ñ-Ô-ð ð à4<ðð ð 'ðð ð ˆCõ ŒM˜#Õ;ÈÐJÑJÔJÐJÐJÐJÐJð	Køøøs   ‚ —AAÁAc           
      ó  — ddl m} |                      d¦  «        }|j        }d                     |                     ¦   «         ¦  «        }d}|› d|› d|› d�}t          | j        |¦  «        }|                     ¦   «         r| 	                    ¦   «          t          |¬¦  «        }	t          d¬¦  «        }
t          d	¬¦  «        }|	5 }|
5 }|5 }t          |t          | j        ¦  «        j        ¦  «        }t          j        | j        |¦  «         |                      ||j        ¦  «         |                      ||||¦  «        \  }}|                      |||¦  «        }|5   ||d
¦  «        5 } ||||¦  «         |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |S )Nr   r   rg   ú-z
0.editablez.whl)Úsuffixz
.build-libz.build-tempÚw)Úwheel.wheelfiler   r]   r€   rU   Úget_tagr   rG   rl   Úunlinkr   rH   ÚshutilÚcopytreerw   r²   Ú_select_strategyÚwrite_files)rK   rY   r   rg   r®   ÚtagÚ	build_tagÚarchive_nameÚ
wheel_pathr�   r‚   Ú	build_tmpÚunpackedÚlibÚtmpÚunpacked_dist_infor«   r¬   ÚstrategyÚ	wheel_objs                       r5   r_   z!editable_wheel._create_wheel_file6  sJ  € Ø-Ð-Ð-Ð-Ð-Ð-à×.Ò.¨{Ñ;Ô;ˆ	Ø”Nˆ	Ø�hŠh�{×*Ò*Ñ,Ô,Ñ-Ô-ˆØ ˆ	Ø#Ð;Ð; iÐ;Ð;°#Ð;Ð;Ð;ˆÝ˜$œ-¨Ñ6Ô6ˆ
Ø×ÒÑÔð 	 Ø×ÒÑÔÐå+°<Ð@Ñ@Ô@ˆÝ&¨lÐ;Ñ;Ô;ˆ	Ý&¨mÐ<Ñ<Ô<ˆ	àð 	0˜x¨ð 	0°c¸9ð 	0ÈÝ!% hµ°TÔ5GÑ0HÔ0HÔ0MÑ!NÔ!NÐÝŒO˜DÔ.Ð0BÑCÔCÐCØ×$Ò$ X¨y¬~Ñ>Ô>Ð>Ø!×5Ò5°iÀÈ3ÐPSÑTÔT‰NˆE�7Ø×,Ò,¨Y¸¸SÑAÔAˆHØð 0ð 0˜9˜9 Z°Ñ5Ô5ð 0¸Ø�˜ E¨7Ñ3Ô3Ð3Ø×%Ò% hÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð Ðs£   ÃG5Ã	GÃBGÅF0	Å*#FÆF0	ÆFÆF0	Æ FÆ!F0	Æ$GÆ0F4Æ4GÆ7F4Æ8GÆ;GÇGÇGÇGÇGÇG5ÇG"	Ç"G5Ç%G"	Ç&G5Ç5G9Ç<G9Úcategoryc                 óÄ   — t          | j        d|› �d ¦  «        }|rB |¦   «         r:t                               d|› d�¦  «         |                      d|› �¦  «         d S d S d S )NÚhas_zInstalling z as non editableÚinstall_)ÚgetattrrO   Ú_loggerÚinfor·   )rK   rÒ   Úhas_categorys      r5   r±   zeditable_wheel._run_installR  s‰   € Ý˜tÔ0Ð2C¸Ð2CÐ2CÀTÑJÔJˆØð 	4˜L˜L™NœNð 	4Ý�LŠLÐA xÐAÐAÐAÑBÔBÐBØ×ÒÐ2¨Ð2Ð2Ñ3Ô3Ð3Ð3Ð3ð	4ð 	4ð 	4ð 	4r7   rÇ   ÚEditableStrategyc                 ó\  — d|› d|› �}t          | j        ¦  «        }t                               | j        ¦  «        }|t          j        u r:t          t          | j        d|¦  «        ¦  «        }t          | j        |||¦  «        S t          | j        ¦  «        }t          || j        |¦  «        }	|t          j        u }
t          | j        ¦  «        dhk    r|	s|
r@| j                             dd¦  «        }t          | j        |t          ||¦  «        g¦  «        S t!          | j        |¦  «        S )zDDecides which strategy to use to implement an editable installation.ú__editable__.r½   rŠ   rD   rn   )r   rI   r$   r6   r(   r<   Ú
_empty_dirÚ	_LinkTreerO   Ú_find_packagesÚ_simple_layoutrS   r+   Úsetrp   Ú
_StaticPthÚ_TopLevelFinder)rK   r€   rÇ   r‚   Ú
build_namerI   r(   Úauxiliary_dirÚpackagesÚhas_simple_layoutÚis_compat_modeÚsrc_dirs               r5   rÅ   zeditable_wheel._select_strategyX  s#  € ð 2 TÐ1Ð1¨CÐ1Ð1ˆ
Ý˜4Ô+Ñ,Ô,ˆÝ×$Ò$ T¤YÑ/Ô/ˆà•=Ô'Ð'Ð'Ý&¥t¨DÔ,<¸gÀzÑ'RÔ'RÑSÔSˆMÝ˜TÔ.°°mÀYÑOÔOÐOå! $Ô"3Ñ4Ô4ˆÝ*¨8°TÔ5EÀ{ÑSÔSÐØ¥Ô!5Ð5ˆÝˆtÔÑ Ô  R DÒ(Ð(Ð->Ð(À.Ð(àÔ&×*Ò*¨2¨sÑ3Ô3ˆGÝ˜dÔ/°½¸[È'Ñ8RÔ8RÐ7SÑTÔTÐTõ ˜tÔ0°$Ñ7Ô7Ð7r7   )r8   r9   r:   r;   Údescriptionr   r$   Úuser_optionsrL   rV   re   r[   rw   r   r>   r   Ú_Pathrž   rœ   r   r   r
   r­   r²   r°   r¶   r_   r±   rÅ   r?   r7   r5   rA   rA   i   s  € € € € € ðð ð 6€Kð 	LØKØ	�$˜˜ Ô!6Ð!<¸"Ñ=Ô=Ð>ð€Lðð ð ðVð Vð Vð>ð >ð >ð4	Að 	Að 	Að'ð 'ð 'ð& H¨S¤Mð &ð &ð &ð &ð
0#Øð0#Ø).ð0#Ø;@ð0#ØKPð0#ð 0#ð 0#ð 0#ðd	#ð 	#ð 	#ð¨¨d°3¬i¸¸cÀ3¸h¼Ð.GÔ(Hð ð ð ð ð	Øð	Ø.3ð	Ø@Eð	ØPUð	à	ˆt�CŒy˜$˜s C˜xœ.Ð(Ô	)ð	ð 	ð 	ð 	ð'ð 'ð 'ð,K Cð Kð Kð Kð Kð(ð ð ð84 Sð 4ð 4ð 4ð 4ð8àð8ð ð8ð ð	8ð
 
ð8ð 8ð 8ð 8ð 8ð 8r7   rA   c                   óJ   — e Zd Zdddee         deeef         fd„Zd„ Zd„ ZdS )	rÚ   r�   r   r«   r¬   c                 ó   — d S rF   r?   )rK   r�   r«   r¬   s       r5   Ú__call__zEditableStrategy.__call__t  ó   € Øˆr7   c                 ó   — d S rF   r?   rJ   s    r5   Ú	__enter__zEditableStrategy.__enter__w  rð   r7   c                 ó   — d S rF   r?   ©rK   Ú	_exc_typeÚ
_exc_valueÚ
_tracebacks       r5   Ú__exit__zEditableStrategy.__exit__z  rð   r7   N)	r8   r9   r:   r   r>   r
   rï   rò   rø   r?   r7   r5   rÚ   rÚ   s  sh   € € € € € ð˜kð °$°s´)ð ÀdÈ3ÐPSÈ8Änð ð ð ð ðð ð ðð ð ð ð r7   rÚ   c                   ój   — e Zd Zdededee         fd„Zdddee         deeef         fd	„Z	d
„ Z
d„ ZdS )râ   rN   r€   Úpath_entriesc                 ó0   — || _         || _        || _        d S rF   )rN   r€   rú   )rK   rN   r€   rú   s       r5   Ú__init__z_StaticPth.__init__  s   € ØˆŒ	ØˆŒ	Ø(ˆÔÐÐr7   r�   r   r«   r¬   c                 ó²   — d                      d„ | j        D ¦   «         ¦  «        }t          |› d�d¦  «        }|                     d| j        › d�|¦  «         d S )Nú
c              3   óX   K  — | ]%}t          |                     ¦   «         ¦  «        V — Œ&d S rF   )r>   rq   )Ú.0Úps     r5   ú	<genexpr>z&_StaticPth.__call__.<locals>.<genexpr>…  s2   è è € ÐIÐI°!�S §¢¡¤Ñ-Ô-ÐIÐIÐIÐIÐIÐIr7   úutf-8rÜ   ú.pth)rU   rú   ÚbytesÚwritestrr€   )rK   r�   r«   r¬   ÚentriesÚcontentss         r5   rï   z_StaticPth.__call__„  sb   € Ø—)’)ÐIÐI°tÔ7HÐIÑIÔIÑJÔJˆÝ˜G˜˜˜¨Ñ1Ô1ˆØ�ŠÐ6 t¤yÐ6Ð6Ð6¸ÑAÔAÐAÐAÐAr7   c                 óª   — dt          t          t          j        | j        ¦  «        ¦  «        ›d�}t
                               |t          z   ¦  «         | S )Nz_
        Editable install will be performed using .pth file to extend `sys.path` with:
        z	
        )Úlistrz   rQ   Úfspathrú   r×   ÚwarningÚ_LENIENT_WARNING©rK   r4   s     r5   rò   z_StaticPth.__enter__‰  sQ   € ðå	�c•"”)˜TÔ.Ñ/Ô/Ñ	0Ô	0ðð ð ˆõ 	�Š˜Õ.Ñ.Ñ/Ô/Ð/Øˆr7   c                 ó   — d S rF   r?   rô   s       r5   rø   z_StaticPth.__exit__‘  rð   r7   N)r8   r9   r:   r   r>   r   r   rü   r
   rï   rò   rø   r?   r7   r5   râ   râ   ~  sœ   € € € € € ð)˜\ð )°ð )ÀDÈÄJð )ð )ð )ð )ð
B˜kð B°$°s´)ð BÀdÈ3ÐPSÈ8Änð Bð Bð Bð Bð
ð ð ðð ð ð ð r7   râ   c                   ó¨   ‡ — e Zd ZdZdedededefˆ fd„Zddd	ee         d
e	eef         fˆ fd„Z
dedee         fd„Zddedefd„Zd„ Zd„ Zd„ Zˆ xZS )rÞ   a`  
    Creates a ``.pth`` file that points to a link tree in the ``auxiliary_dir``.

    This strategy will only link files (not dirs), so it can be implemented in
    any OS, even if that means using hardlinks instead of symlinks.

    By collocating ``auxiliary_dir`` and the original source code, limitations
    with hardlinks should be avoided.
    rN   r€   rå   r‚   c                 ó  •— t          |¦  «        | _        t          |¦  «                             ¦   «         | _        |                     d¦  «        j        | _        t          ¦   «                              ||| j        g¦  «         d S )Nr   )	r   rå   rq   r‚   r—   Ú	copy_fileÚ_fileÚsuperrü   )rK   rN   r€   rå   r‚   Ú	__class__s        €r5   rü   z_LinkTree.__init__Ÿ  sn   ø€ õ " -Ñ0Ô0ˆÔÝ˜i™œ×0Ò0Ñ2Ô2ˆŒØ×)Ò)¨*Ñ5Ô5Ô?ˆŒ
Ý‰Œ×Ò˜˜t dÔ&8Ð%9Ñ:Ô:Ð:Ð:Ð:r7   r�   r   r«   r¬   c                 óz   •— |                       ||¦  «         t          ¦   «                              |||¦  «         d S rF   )Ú_create_linksr  rï   )rK   r�   r«   r¬   r  s       €r5   rï   z_LinkTree.__call__ª  s;   ø€ Ø×Ò˜5 'Ñ*Ô*Ð*Ý‰Œ×Ò˜  wÑ/Ô/Ð/Ð/Ð/r7   Úfiler)   c                 ó*  — t          t          ¦  «        5  t          |¦  «                             ¦   «                              | j        ¦  «        }t          |¦  «                             t          j	        d¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nú/)
r   Ú
ValueErrorr   rq   Úrelative_tor‚   r>   ÚreplacerQ   Úsep)rK   r  rT   s      r5   Ú_normalize_outputz_LinkTree._normalize_output®  s³   € å•jÑ!Ô!ð 	2ð 	2Ý˜‘:”:×%Ò%Ñ'Ô'×3Ò3°D´NÑCÔCˆDÝ�t‘9”9×$Ò$¥R¤V¨SÑ1Ô1ð	2ð 	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð ˆts   •A&BÂBÂBNÚrelative_outputÚsrc_filec                 ó²   — | j         |z  }|j                             ¦   «         s|j                             d¬¦  «         |                      |||¬¦  «         d S )NT)Úparents©Úlink)rå   ry   Úis_dirrZ   r  )rK   r   r!  r%  Údests        r5   Ú_create_filez_LinkTree._create_fileµ  s\   € ØÔ! OÑ3ˆØŒ{×!Ò!Ñ#Ô#ð 	,ØŒK×Ò dÐÑ+Ô+Ð+Ø�
Š
�8˜T¨ˆ
Ñ-Ô-Ð-Ð-Ð-r7   c                 ó¬  ‡ — ‰ j                              dd¬¦  «         t          ‰ j         ¦  «        rdnd}ˆ fd„|                     ¦   «         D ¦   «         }|                     d d ¦  «         |D ]3}‰                      |¦  «        }|r||vr‰                      ||¦  «         Œ4|                     ¦   «         D ]\  }}‰                      |||¬¦  «         Œd S )NT)r#  rX   ÚsymÚhardc                 óB   •— i | ]\  }}‰                      |¦  «        |“ŒS r?   )r  )r   ÚkÚvrK   s      €r5   ú
<dictcomp>z+_LinkTree._create_links.<locals>.<dictcomp>¾  s=   ø€ ð 
ð 
ð 
á��1ð ×"Ò" 1Ñ%Ô% qð
ð 
ð 
r7   r$  )rå   rZ   Ú_can_symlink_filesÚitemsÚpopr  r(  )rK   ÚoutputsÚoutput_mappingÚ	link_typeÚmappingsÚoutputÚrelativeÚsrcs   `       r5   r  z_LinkTree._create_links»  s  ø€ ØÔ× Ò ¨¸Ð Ñ=Ô=Ð=Ý/°Ô0BÑCÔCÐO�E�EÈˆ	ð
ð 
ð 
ð 
à&×,Ò,Ñ.Ô.ð
ñ 
ô 
ˆð 	�Š�T˜4Ñ Ô Ð àð 	4ð 	4ˆFØ×-Ò-¨fÑ5Ô5ˆHØð 4˜H¨HÐ4Ð4Ø×!Ò! (¨FÑ3Ô3Ð3øà%Ÿ^š^Ñ-Ô-ð 	=ð 	=‰MˆH�cØ×Ò˜h¨°)ÐÑ<Ô<Ð<Ð<ð	=ð 	=r7   c                 óN   — d}t                                |t          z   ¦  «         | S )Nz=Strict editable install will be performed using a link tree.
)r×   r  Ú_STRICT_WARNINGr  s     r5   rò   z_LinkTree.__enter__Ì  s#   € ØNˆÝ�Š˜�oÑ-Ñ.Ô.Ð.Øˆr7   c                 óP   — d| j         › d�}t          j        |t          ¦  «         d S )Nz\

        Strict editable installation performed using the auxiliary directory:
            z†

        Please be careful to not remove this directory, otherwise you might not be able
        to import/use your package.
        )rå   r0   r1   ÚInformationOnly©rK   rõ   rö   r÷   r4   s        r5   rø   z_LinkTree.__exit__Ñ  s8   € ðàÔðð ð ˆõ 	Œ�c�?Ñ+Ô+Ð+Ð+Ð+r7   rF   )r8   r9   r:   r;   r   r>   rì   rü   r   r
   rï   r   r  r(  r  rò   rø   Ú__classcell__)r  s   @r5   rÞ   rÞ   •  s%  ø€ € € € € ðð ð	;Ø ð	;àð	;ð ð	;ð ð		;ð 	;ð 	;ð 	;ð 	;ð 	;ð0˜kð 0°$°s´)ð 0ÀdÈ3ÐPSÈ8Änð 0ð 0ð 0ð 0ð 0ð 0ð cð ¨h°s¬mð ð ð ð ð.ð .¨Cð .¸3ð .ð .ð .ð .ð=ð =ð =ð"ð ð ð
,ð ,ð ,ð ,ð ,ð ,ð ,r7   rÞ   c                   óZ   — e Zd Zdedefd„Zdddee         deeef         fd„Zd	„ Z	d
„ Z
dS )rã   rN   r€   c                 ó"   — || _         || _        d S rF   )rN   r€   )rK   rN   r€   s      r5   rü   z_TopLevelFinder.__init__Ý  s   € ØˆŒ	ØˆŒ	ˆ	ˆ	r7   r�   r   r«   r¬   c           	      óˆ  — | j         j        pt          j        }t	          t          | j         ¦  «        t          | j         ¦  «        ¦  «        }| j         j        pi }t          |||¦  «        }t          t	          t          | j         j        pg |¦  «        d„ t          |¦  «        D ¦   «         ¦  «        ¦  «        }d| j        › d�}	t          |	¦  «        }
t          t!          |	||¦  «        d¦  «        }|                     |
› d�|¦  «         t          d|
› d|
› d�d¦  «        }|                     d| j        › d	�|¦  «         d S )
Nc              3   ó   K  — | ]}|g fV — Œ	d S rF   r?   )r   Únss     r5   r  z+_TopLevelFinder.__call__.<locals>.<genexpr>é  s&   è è € Ð@Ð@˜"ˆb�"ˆXÐ@Ð@Ð@Ð@Ð@Ð@r7   rÜ   z.finderr  z.pyzimport z; z
.install()r  )rN   rP   rQ   rR   r   rß   Ú_find_top_level_modulesrS   Ú_find_package_rootsÚdictÚ_find_namespacesræ   Ú_find_virtual_namespacesr€   Ú_make_identifierr  Ú_finder_templater  )rK   r�   r«   r¬   rP   Ú	top_levelrS   ÚrootsÚnamespaces_r€   ÚfinderÚcontents               r5   rï   z_TopLevelFinder.__call__á  sE  € Ø”9Ô%Ð2­¬ˆÝ�.¨¬Ñ3Ô3Õ5LÈTÌYÑ5WÔ5WÑXÔXˆ	Ø”iÔ+Ð1¨rˆÝ# I¨{¸HÑEÔEˆå,0µÝ˜TœYÔ/Ð5°2°uÑ=Ô=Ø@Ð@Õ 8¸Ñ ?Ô ?Ð@Ñ@Ô@ñ2
ô 2
ñ -ô -ˆð
 2˜tœyÐ1Ð1Ð1ˆÝ! $Ñ'Ô'ˆÝÕ(¨¨u°kÑBÔBÀGÑLÔLˆØ�Š˜&�~�~�~ wÑ/Ô/Ð/åÐ> &Ð>Ð>¨FÐ>Ð>Ð>ÀÑHÔHˆØ�ŠÐ6 t¤yÐ6Ð6Ð6¸Ñ@Ô@Ð@Ð@Ð@r7   c                 óN   — d}t                                |t          z   ¦  «         | S )Nz=Editable install will be performed using a meta path finder.
)r×   r  r  r  s     r5   rò   z_TopLevelFinder.__enter__ô  s$   € ØNˆÝ�Š˜Õ.Ñ.Ñ/Ô/Ð/Øˆr7   c                 ó>   — d}t          j        |t          ¦  «         d S )Nz¢

        Please be careful with folders in your working directory with the same
        name as your package as they may take precedence during imports.
        )r0   r1   r=  r>  s        r5   rø   z_TopLevelFinder.__exit__ù  s#   € ðˆõ 	Œ�c�?Ñ+Ô+Ð+Ð+Ð+r7   N)r8   r9   r:   r   r>   rü   r   r
   rï   rò   rø   r?   r7   r5   rã   rã   Ü  s‘   € € € € € ð˜\ð °ð ð ð ð ðA˜kð A°$°s´)ð AÀdÈ3ÐPSÈ8Änð Að Að Að Að&ð ð ð
,ð ,ð ,ð ,ð ,r7   rã   Úbase_dirr)   c                 ó¤  — t          t          |                      ¦   «         ¦  «        ¬¦  «        5 }t          |d¦  «        t          |d¦  «        }}|                     dd¬¦  «         t          t          t          t          ¦  «        5  t          j
        ||¦  «         |                     ¦   «         r3|                     d¬¦  «        dk    r	 d d d ¦  «         d d d ¦  «         dS d d d ¦  «         n# 1 swxY w Y   	 t          j        ||¦  «         n$# t          $ r}d}t          |¦  «        |‚d }~ww xY w	 d d d ¦  «         d	S # 1 swxY w Y   d S )
N)Údirz	file1.txtz	file2.txtÚfile1r  )ÚencodingTz�File system does not seem to support either symlinks or hard links. Strict editable installs require one of them to be supported.F)r   r>   rq   r   Ú
write_textr   ÚAttributeErrorÚNotImplementedErrorÚOSErrorrQ   ÚsymlinkÚ
is_symlinkÚ	read_textr%  r`   ÚLinksNotSupported)rS  rÎ   Úpath1Úpath2rd   r4   s         r5   r0  r0    s  € Ý	¥ H×$4Ò$4Ñ$6Ô$6Ñ 7Ô 7Ð	8Ñ	8Ô	8ð ¸CÝ˜C Ñ-Ô-­t°C¸Ñ/EÔ/EˆuˆØ×Ò˜¨7ÐÑ3Ô3Ð3Ý•nÕ&9½7ÑCÔCð 	ð 	ÝŒJ�u˜eÑ$Ô$Ð$Ø×ÒÑ!Ô!ð  e§o¢o¸w oÑ&GÔ&GÈ7Ò&RÐ&RØð	ð 	ð 	ñ 	ô 	ð 	ðð ð ñ ô ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
	1ÝŒG�E˜5Ñ!Ô!Ð!Ð!øÝð 	1ð 	1ð 	1ðPð õ $ CÑ(Ô(¨bÐ0øøøøð	1øøøð ð!ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð sa   °AEÂAC1ÃEÃ%EÃ1C5	Ã5EÃ8C5	Ã9EÃ=DÄEÄ
D4ÄD/Ä/D4Ä4EÅE	ÅE	ræ   rS   rI   c                 ó"  ‡‡‡— ˆˆfd„| D ¦   «         }|st          ‰¦  «        i dhfv S t          j                             d„ |                     ¦   «         D ¦   «         ¦  «        Št          ˆfd„|                     ¦   «         D ¦   «         ¦  «        S )a[  Return ``True`` if:
    - all packages are contained by the same parent directory, **and**
    - all packages become importable if the parent directory is added to ``sys.path``.

    >>> _simple_layout(['a'], {"": "src"}, "/tmp/myproj")
    True
    >>> _simple_layout(['a', 'a.b'], {"": "src"}, "/tmp/myproj")
    True
    >>> _simple_layout(['a', 'a.b'], {}, "/tmp/myproj")
    True
    >>> _simple_layout(['a', 'a.a1', 'a.a1.a2', 'b'], {"": "src"}, "/tmp/myproj")
    True
    >>> _simple_layout(['a', 'a.a1', 'a.a1.a2', 'b'], {"a": "a", "b": "b"}, ".")
    True
    >>> _simple_layout(['a', 'a.a1', 'a.a1.a2', 'b'], {"a": "_a", "b": "_b"}, ".")
    False
    >>> _simple_layout(['a', 'a.a1', 'a.a1.a2', 'b'], {"a": "_a"}, "/tmp/myproj")
    False
    >>> _simple_layout(['a', 'a.a1', 'a.a1.a2', 'b'], {"a.a1.a2": "_a2"}, ".")
    False
    >>> _simple_layout(['a', 'a.b'], {"": "src", "a.b": "_ab"}, "/tmp/myproj")
    False
    >>> # Special cases, no packages yet:
    >>> _simple_layout([], {"": "src"}, "/tmp/myproj")
    True
    >>> _simple_layout([], {"a": "_a", "": "src"}, "/tmp/myproj")
    False
    c                 ó4   •— i | ]}|t          |‰‰¦  «        “ŒS r?   r   )r   ÚpkgrS   rI   s     €€r5   r/  z"_simple_layout.<locals>.<dictcomp>4  s8   ø€ ð ð ð àð 	Õ˜s K°Ñ=Ô=ðð ð r7   rD   c                 ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r?   )Ú_parent_path)r   r-  r.  s      r5   ú
<listcomp>z"_simple_layout.<locals>.<listcomp>:  s&   € Ð OÐ OÐ O¹¸¸1¥¨a°Ñ!3Ô!3Ð OÐ OÐ Or7   c           	   3   óš   •K  — | ]E\  }}t          t          ‰g|                     d ¦  «        ¢R Ž ¦  «        t          |¦  «        k    V — ŒFdS ©rn   N)Ú_normalize_pathr   Úsplit)r   ÚkeyÚvaluery   s      €r5   r  z!_simple_layout.<locals>.<genexpr>;  sj   øè è € ð ð áˆC�õ 	�˜VÐ5 c§i¢i°¡n¤nÐ5Ð5Ð5Ñ6Ô6½/È%Ñ:PÔ:PÒPðð ð ð ð ð r7   )rá   rQ   rT   Ú
commonpathr1  Úall)ræ   rS   rI   Úlayoutry   s    `` @r5   rà   rà     sÁ   øøø€ ð>ð ð ð ð àðñ ô €Fð ð .Ý�;ÑÔ B¨¨ :Ð-Ð-ÝŒW×ÒÐ OÐ OÀÇÂÁÄÐ OÑ OÔ OÑPÔP€FÝð ð ð ð à Ÿ,š,™.œ.ðñ ô ñ ô ð r7   c                 ó¤   — |                      | ¦  «        r|dt          | ¦  «         …         n|}|                     dt          j        z   ¦  «        S )a7  Infer the parent path containing a package, that if added to ``sys.path`` would
    allow importing that package.
    When ``pkg`` is directly mapped into a directory with a different name, return its
    own path.
    >>> _parent_path("a", "src/a")
    'src'
    >>> _parent_path("b", "src/c")
    'src/c'
    Nr  )rk   ÚlenÚrstriprQ   r  )rd  Úpkg_pathry   s      r5   rf  rf  A  sJ   € ð &.×%6Ò%6°sÑ%;Ô%;ÐIˆX�j�˜C™œ�y�jÔ!Ð!À€FØ�=Š=˜�rœv™Ñ&Ô&Ð&r7   rN   c              #   ó  K  — t          | j        pg ¦  «        E d {V —† | j        pg }d„ |D ¦   «         }| j        r
| j        V — n| j        pg }|d„ |D ¦   «         z  }|D ]}|                     d¦  «        \  }}}|V — Œ d S )Nc                 ó   — g | ]}d |v ¯|‘Œ	S ©rn   r?   ©r   Úmods     r5   rg  z"_find_packages.<locals>.<listcomp>S  s   € Ð>Ð>Ð>˜c°3¸#°:°:�c°:°:°:r7   c                 ó.   — g | ]}d |j         v ¯|j         ‘ŒS rw  ©r€   ©r   Úxs     r5   rg  z"_find_packages.<locals>.<listcomp>X  s!   € ÐHÐHÐH a¸#ÀÄ¸-¸-˜1œ6¸-¸-¸-r7   rn   )Úiterræ   Ú
py_modulesÚext_packageÚext_modulesÚ
rpartition)rN   r  Únested_modulesr�  ÚmoduleÚpackageÚ_s          r5   rß   rß   O  sÍ   è è € Ý�D”MÐ' RÑ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(à”Ð& B€JØ>Ð> ZÐ>Ñ>Ô>€NØÔð IØÔÐÐÐÐàÔ&Ð,¨"ˆØÐHÐH¨;ÐHÑHÔHÑHˆà ð ð ˆØ×)Ò)¨#Ñ.Ô.‰ˆ��AØˆˆˆˆðð r7   c              #   óˆ   K  — | j         pg }d„ |D ¦   «         E d {V —† | j        s| j        pg }d„ |D ¦   «         E d {V —† d S d S )Nc              3   ó"   K  — | ]
}d |v¯|V — ŒdS ri  r?   rx  s     r5   r  z*_find_top_level_modules.<locals>.<genexpr>a  s&   è è € Ð<Ð<˜¨S¸¨^¨^�¨^¨^¨^¨^Ð<Ð<r7   c              3   ó6   K  — | ]}d |j         v¯|j         V — ŒdS ri  r{  r|  s     r5   r  z*_find_top_level_modules.<locals>.<genexpr>e  s0   è è € ÐEÐE˜q°3¸a¼fÐ3DÐ3D�A”FÐ3DÐ3DÐ3DÐ3DÐEÐEr7   )r  r€  r�  )rN   r  r�  s      r5   rE  rE  _  s‰   è è € Ø”Ð& B€JØ<Ð<˜zÐ<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<àÔð FØÔ&Ð,¨"ˆØEÐE KÐEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEðFð Fr7   rP   c                 ó\   ‡‡— ˆˆfd„t          | ¦  «        D ¦   «         }t          |¦  «        S )Nc           
      óN   •— i | ]!}|t          t          |‰‰¦  «        ¦  «        “Œ"S r?   )Ú_absolute_rootr   )r   rd  rS   rP   s     €€r5   r/  z'_find_package_roots.<locals>.<dictcomp>m  s@   ø€ ð !ð !ð !àð 	�^Õ-¨c°;ÀÑIÔIÑJÔJð!ð !ð !r7   )ÚsortedÚ_remove_nested)ræ   rS   rP   Ú	pkg_rootss    `` r5   rF  rF  h  sI   øø€ ð
!ð !ð !ð !ð !å˜(Ñ#Ô#ð!ñ !ô !€Iõ
 ˜)Ñ$Ô$Ð$r7   rT   c                 óê   — t          | ¦  «        }|j        }|                     ¦   «         r!t          |                     ¦   «         ¦  «        S t          |                     ¦   «         |j        z  ¦  «        S )z(Works for packages and top-level modules)r   ry   rl   r>   rq   r€   )rT   Úpath_ry   s      r5   rŒ  rŒ  u  sY   € å�‰JŒJ€EØŒ\€Fà‡|‚|�~„~ð 2Ý�5—=’=‘?”?Ñ#Ô#Ð#å�6—>’>Ñ#Ô# e¤jÑ0Ñ1Ô1Ð1r7   r�  c           	   #   ó>  K  — | D ]—}d|vrŒ|                      d¦  «        }t          t          |¦  «        dz
  dd¦  «        D ]Y}d                     |d|…         ¦  «        }t	          t          || d¦  «        ¦  «        }|                     ¦   «         r|| vr|V — ŒZŒ˜dS )a8  By carefully designing ``package_dir``, it is possible to implement the logical
    structure of PEP 420 in a package without the corresponding directories.

    Moreover a parent package can be purposefully/accidentally skipped in the discovery
    phase (e.g. ``find_packages(include=["mypkg.*"])``, when ``mypkg.foo`` is included
    by ``mypkg`` itself is not).
    We consider this case to also be a virtual namespace (ignoring the original
    directory) to emulate a non-editable installation.

    This function will try to find these kinds of namespaces.
    rn   é   r   éÿÿÿÿNrD   )rk  Úrangerr  rU   r   r   rl   )r�  rd  ÚpartsÚiÚpartial_namerT   s         r5   rI  rI  €  sÀ   è è € ð ð 	#ð 	#ˆØ�cˆ>ˆ>ØØ—	’	˜#‘”ˆÝ•s˜5‘z”z A‘~ q¨"Ñ-Ô-ð 	#ð 	#ˆAØŸ8š8 E¨"¨1¨"¤IÑ.Ô.ˆLÝÕ)¨,¸	À2ÑFÔFÑGÔGˆDØ—;’;‘=”=ð # L¸	Ð$AÐ$Aà"Ð"Ð"Ð"øð	#ð		#ð 	#r7   c              #   óÊ   K  — | D ]]}t          ||d¦  «        }t          |¦  «                             ¦   «         r)t          |d¦  «                             ¦   «         s||gfV — Œ^d S )NrD   z__init__.py)r   r   rl   )ræ   r�  rd  rT   s       r5   rH  rH  ˜  s|   è è € ð ð  ð  ˆÝ   i°Ñ4Ô4ˆÝ�‰:Œ:×ÒÑÔð 	 ¥t¨D°-Ñ'@Ô'@×'GÒ'GÑ'IÔ'Ið 	 Ø˜˜�-ÐÐÐøð ð  r7   c                 ó:  ‡‡— t          |                      ¦   «         ¦  «        }t          t          |                      ¦   «         ¦  «        ¦  «        D ]H\  ŠŠt          ˆˆfd„|                      ¦   «         D ¦   «         ¦  «        r|                     ‰¦  «         ŒI|S )Nc              3   óN   •K  — | ]\  }}‰|k    ot          ‰‰||¦  «        V — Œ d S rF   )Ú
_is_nested)r   ÚotherÚ
other_pathrT   rd  s      €€r5   r  z!_remove_nested.<locals>.<genexpr>¥  sR   øè è € ð 
ð 
á!��zð �5ŠLÐE�Z¨¨T°5¸*ÑEÔEð
ð 
ð 
ð 
ð 
ð 
r7   )rG  ÚcopyÚreversedr
  r1  Úanyr2  )r�  r7  rT   rd  s     @@r5   rŽ  rŽ  ¡  s¦   øø€ Ý�)—.’.Ñ"Ô"Ñ#Ô#€Få�d 9§?¢?Ñ#4Ô#4Ñ5Ô5Ñ6Ô6ð ð ‰	ˆˆTÝð 
ð 
ð 
ð 
ð 
à%.§_¢_Ñ%6Ô%6ð
ñ 
ô 
ñ 
ô 
ð 	ð �JŠJ�s‰OŒOˆOøà€Mr7   rd  rt  ry   Úparent_pathc                 ó   — t          |¦  «        }|                      |dd¦  «                             d¦  «                             d¦  «        }|                      |¦  «        o|t          t          |g|¢R Ž ¦  «        k    S )a©  
    Return ``True`` if ``pkg`` is nested inside ``parent`` both logically and in the
    file system.
    >>> _is_nested("a.b", "path/a/b", "a", "path/a")
    True
    >>> _is_nested("a.b", "path/a/b", "a", "otherpath/a")
    False
    >>> _is_nested("a.b", "path/a/b", "c", "path/c")
    False
    >>> _is_nested("a.a", "path/a/a", "a", "path/a")
    True
    >>> _is_nested("b.a", "path/b/a", "a", "path/a")
    False
    rD   r“  rn   )rj  r  Ústriprk  Ú
startswithr   )rd  rt  ry   r¢  Únorm_pkg_pathÚrests         r5   rœ  rœ  ®  s|   € õ $ HÑ-Ô-€MØ�;Š;�v˜r 1Ñ%Ô%×+Ò+¨CÑ0Ô0×6Ò6°sÑ;Ô;€Dà�Š�vÑÔð 	GØ�_­T°+Ð-EÀÐ-EÐ-EÐ-EÑFÔFÒFðr7   Úfilenamec                 ó  — t           j        dk    rt          j                             | ¦  «        n| }t          j                             t          j                             t          j                             |¦  «        ¦  «        ¦  «        S )z1Normalize a file/dir name for comparison purposesÚcygwin)ÚsysÚplatformrQ   rT   ÚabspathÚnormcaseÚrealpathÚnormpath)r¨  r  s     r5   rj  rj  Å  s^   € õ ),¬¸Ò(@Ð(@�2Œ7�?Š?˜8Ñ$Ô$Ð$Àh€DÝŒ7×Ò�BœG×,Ò,­R¬W×-=Ò-=¸dÑ-CÔ-CÑDÔDÑEÔEÐEr7   Údir_c                 óZ   — t          j        | d¬¦  «         t          j        | ¦  «         | S )zFCreate a directory ensured to be empty. Existing files may be removed.T)Úignore_errors)rÃ   ÚrmtreerQ   Úmakedirs)r±  s    r5   rÝ   rÝ   Ì  s,   € å
„M�$ dÐ+Ñ+Ô+Ð+Ý„K�ÑÔÐØ€Kr7   r€   c                 ó^   — t          j        dd| ¦  «        }|                     ¦   «         sJ ‚|S )zÏMake a string safe to be used as Python identifier.
    >>> _make_identifier("12abc")
    '_12abc'
    >>> _make_identifier("__editable__.myns.pkg-78.9.3_local")
    '__editable___myns_pkg_78_9_3_local'
    z
\W|^(?=\d)r†  )ÚreÚsubÚisidentifier)r€   Úsafes     r5   rJ  rJ  Ó  s4   € õ Œ6�-  dÑ+Ô+€DØ×ÒÑÔÐÐÐØ€Kr7   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )rr   c                 óZ   — || _         || _        || _        || _        g | _        d| _        d S )NF)rO   rP   rt   Úeditable_namer3  Údry_run)rK   rO   rt   r½  rP   s        r5   rü   z_NamespaceInstaller.__init__à  s3   € Ø(ˆÔØ ˆŒØ 0ˆÔØ*ˆÔØˆŒØˆŒˆˆr7   c                 óV   — t           j                             | j        | j        ¦  «        S )zInstallation target.)rQ   rT   rU   rt   r½  rJ   s    r5   Ú_get_targetz_NamespaceInstaller._get_targetè  s   € åŒw�|Š|˜DÔ1°4Ô3EÑFÔFÐFr7   c                 óD   — t          t          | j        ¦  «        ¦  «        S )z1Where the modules/packages should be loaded from.)Úreprr>   rP   rJ   s    r5   Ú	_get_rootz_NamespaceInstaller._get_rootì  s   € å•C˜œÑ&Ô&Ñ'Ô'Ð'r7   N)r8   r9   r:   rü   rÀ  rÃ  r?   r7   r5   rr   rr   ß  sD   € € € € € ðð ð ðGð Gð Gð(ð (ð (ð (ð (r7   rr   a<	  import sys
from importlib.machinery import ModuleSpec
from importlib.machinery import all_suffixes as module_suffixes
from importlib.util import spec_from_file_location
from itertools import chain
from pathlib import Path

MAPPING = {mapping!r}
NAMESPACES = {namespaces!r}
PATH_PLACEHOLDER = {name!r} + ".__path_hook__"


class _EditableFinder:  # MetaPathFinder
    @classmethod
    def find_spec(cls, fullname, path=None, target=None):
        for pkg, pkg_path in reversed(list(MAPPING.items())):
            if fullname == pkg or fullname.startswith(f"{{pkg}}."):
                rest = fullname.replace(pkg, "", 1).strip(".").split(".")
                return cls._find_spec(fullname, Path(pkg_path, *rest))

        return None

    @classmethod
    def _find_spec(cls, fullname, candidate_path):
        init = candidate_path / "__init__.py"
        candidates = (candidate_path.with_suffix(x) for x in module_suffixes())
        for candidate in chain([init], candidates):
            if candidate.exists():
                return spec_from_file_location(fullname, candidate)


class _EditableNamespaceFinder:  # PathEntryFinder
    @classmethod
    def _path_hook(cls, path):
        if path == PATH_PLACEHOLDER:
            return cls
        raise ImportError

    @classmethod
    def _paths(cls, fullname):
        # Ensure __path__ is not empty for the spec to be considered a namespace.
        return NAMESPACES[fullname] or MAPPING.get(fullname) or [PATH_PLACEHOLDER]

    @classmethod
    def find_spec(cls, fullname, target=None):
        if fullname in NAMESPACES:
            spec = ModuleSpec(fullname, None, is_package=True)
            spec.submodule_search_locations = cls._paths(fullname)
            return spec
        return None

    @classmethod
    def find_module(cls, fullname):
        return None


def install():
    if not any(finder == _EditableFinder for finder in sys.meta_path):
        sys.meta_path.append(_EditableFinder)

    if not NAMESPACES:
        return

    if not any(hook == _EditableNamespaceFinder._path_hook for hook in sys.path_hooks):
        # PathEntryFinder is needed to create NamespaceSpec without private APIS
        sys.path_hooks.append(_EditableNamespaceFinder._path_hook)
    if PATH_PLACEHOLDER not in sys.path:
        sys.path.append(PATH_PLACEHOLDER)  # Used just to trigger the path hook
r¬   r   c                 óž   — t          t          |                     ¦   «         d„ ¬¦  «        ¦  «        }t                               | ||¬¦  «        S )z_Create a string containing the code for the``MetaPathFinder`` and
    ``PathEntryFinder``.
    c                 ó   — | d         S )Nr   r?   )r  s    r5   ú<lambda>z"_finder_template.<locals>.<lambda>?  s
   € ¸¸1¼€ r7   )rl  ©r€   r¬   r   )rG  r�  r1  Ú_FINDER_TEMPLATEÚformatrÇ  s      r5   rK  rK  9  sC   € õ •6˜'Ÿ-š-™/œ/¨~¨~Ð>Ñ>Ô>Ñ?Ô?€GÝ×"Ò"¨°gÈ*Ð"ÑUÔUÐUr7   c                   ó   — e Zd ZdZdS )r=  zóCurrently there is no clear way of displaying messages to the users
    that use the setuptools backend directly via ``pip``.
    The only thing that might work is a warning, although it is not the
    most appropriate tool for the job...
    N©r8   r9   r:   r;   r?   r7   r5   r=  r=  C  s   € € € € € ðð ð ð r7   r=  c                   ó   — e Zd ZdZdS )r_  zCFile system does not seem to support either symlinks or hard links.NrË  r?   r7   r5   r_  r_  K  s   € € € € € ØMÐMÐMÐMr7   r_  )Wr;   ÚloggingrQ   r·  rÃ   r«  ra   r0   Ú
contextlibr   Úenumr   Úinspectr   Ú	itertoolsr   Úpathlibr   Útempfiler   Útypingr	   r
   r   r   r   r   r   r   r   r   Ú
setuptoolsr   r   r   r   Úsetuptools.command.build_pyr   rµ   Úsetuptools.discoveryr   Úsetuptools.distr   rÀ   r   Úversion_infor   Útyping_extensionsÚabcr    r>   rì   r!   Ú	getLoggerr8   r×   r$   r;  r  rA   rÚ   râ   rÞ   rã   Úboolr0  rà   rf  rß   rE  rF  rŒ  rI  rH  rŽ  rœ  rj  rÝ   rJ  Ú	Installerrr   rÈ  rK  ÚUserWarningr=  Ú	FileErrorr_  r?   r7   r5   ú<module>rá     sÃ  ðð
ð 
ð €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð QÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ @Ð @Ð @Ð @Ð @Ð @Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø (Ð (Ð (Ð (Ð (Ð (àð *Ø)Ð)Ð)Ð)Ð)Ð)àÔ�vÒÐØÐÐÐÐÐÐØð $Ø*Ð*Ð*Ð*Ð*Ð*Ð*à#Ð#Ð#Ð#Ð#Ð#àˆc�4ˆiÔ€Ø€WˆT˜ÐÑÔ€Ø
ˆ'Ô
˜HÑ
%Ô
%€ð!$ð !$ð !$ð !$ð !$�Dñ !$ô !$ð !$ðH€ðÐ ðG8ð G8ð G8ð G8ð G8�Wñ G8ô G8ð G8ðTð ð ð ð �xñ ô ð ðð ð ð ð ñ ô ð ð.D,ð D,ð D,ð D,ð D,�
ñ D,ô D,ð D,ðN",ð ",ð ",ð ",ð ",ñ ",ô ",ð ",ðJ ð ¨$ð ð ð ð ð()Ø�sŒmð)Ø*.¨s°C¨x¬.ð)ØGKð)à	ð)ð )ð )ð )ðX'ð 'ð 'ð˜ð ¨(°3¬-ð ð ð ð ð F ,ð F°8¸C´=ð Fð Fð Fð Fð
%Ø�sŒmð
%à˜˜c˜Ô"ð
%ð ð
%ð 
ˆ#ˆsˆ(„^ð	
%ð 
%ð 
%ð 
%ð2˜ð 2 3ð 2ð 2ð 2ð 2ð#¨¨S°#¨X¬ð #¸8ÀC¼=ð #ð #ð #ð #ð0 Ø�3Œið Ø$(¨¨c¨¤Nð àˆe�C˜˜cœ�NÔ#Ô$ð ð  ð  ð  ð
˜d 3¨ 8œnð 
°°c¸3°h´ð 
ð 
ð 
ð 
ð�Cð  3ð °ð À#ð È$ð ð ð ð ð.F˜eð F¨ð Fð Fð Fð Fð�Rð ˜Bð ð ð ð ð	˜3ð 	 3ð 	ð 	ð 	ð 	ð(ð (ð (ð (ð (˜*Ô.ñ (ô (ð (ð$EÐ ðPVØ
ðVØ  S Ô)ðVØ7;¸CÀÀcÄ¸NÔ7KðVàðVð Vð Vð Vðð ð ð ð �kñ ô ð ðNð Nð Nð Nð N˜Ô(ñ Nô Nð Nð Nð Nr7   