ruạṛ
a �u:jK� � @ s d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl m Z mZmZ ddl mZ ddlmZ ddlmZ ddlmZmZ dd lmZ dd lmZ ddlmZ ddlmZmZmZm Z d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl$m(Z( d dl)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 ddl3m3Z4 ddl5m5Z6 ddl7m7Z8 ddl9m9Z: ddl;m;Z< ddl=m=Z> e�r�ddl?m@Z@ d dlAmBZB ede(d�ZCe�DeE�ZFG dd � d e�ZGd!ZHd"ZIG d#d$� d$e"�ZJG d%d&� d&e�ZKG d'd(� d(�ZLG d)d*� d*eL�ZMG d+d,� d,�ZNd-d.d/�d0d1�ZOd2d3d4�d5d6�ZPd7d8d9d3d:�d;d<�ZQd=d>� ZRd?d@dA�dBdC�ZSd?d@dA�dDdE�ZTd7dFd9d8dG�dHdI�ZUd9d-dJ�dKdL�ZVd8d@dM�dNdO�ZWdPd8dQdR�dSdT�ZXd8d8dM�dUdV�ZYd-d-d-d-d3dW�dXdY�ZZdddZ�d[d\�Z[G d]d^� d^e'j\�Z]d_Z^d-dFd`d-da�dbdc�Z_G ddde� dee&j`�ZadS )fa� 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``. � )�annotationsN)�Iterable�Iterator�Mapping)�suppress)�Enum)�cleandoc)�chain�starmap)�Path)�TemporaryDirectory)� TracebackType)� TYPE_CHECKING�Protocol�TypeVar�cast� )�Command�_normalization�_path�_shutil�errors� namespaces)�StrPath)�py310�py312��find_package_path)�Distribution)�InformationOnly�SetuptoolsDeprecationWarning� )�build)�build_py)� dist_info)�egg_info)�install)�install_scripts)�Self�� WheelFile�_P)�boundc @ s0 e Zd ZdZdZdZdZedd d�dd��Zd 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� str | None)�mode�returnc C sN |s t jS |�� }|t jvr.t�d|�d���|dkrFtjdddd� t | S )NzInvalid editable mode: z. Try: 'strict'.�COMPATzCompat editable installsa 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. zuserguide/development_mode.html)Zsee_docs)r- �LENIENT�upper�__members__r �OptionErrorr �emit)�clsr2 �_mode� r<