import site import subprocess import sys from setuptools import Command from setuptools.warnings import SetuptoolsDeprecationWarning class develop(Command): """Set up package for development""" user_options = [ ("install-dir=", "d", "install package to DIR"), ('no-deps', 'N', "don't install dependencies"), ('user', None, f"install in user site-package '{site.USER_SITE}'"), ('prefix=', None, "installation prefix"), ("index-url=", "i", "base URL of Python Package Index"), ] boolean_options = [ 'no-deps', 'user', ] install_dir = None no_deps = False user = False prefix = None index_url = None def run(self): cmd = ( [sys.executable, '-m', 'pip', 'install', '-e', '.', '--use-pep517'] + ['--target', self.install_dir] * bool(self.install_dir) + ['--no-deps'] * self.no_deps + ['--user'] * self.user + ['--prefix', self.prefix] * bool(self.prefix) + ['--index-url', self.index_url] * bool(self.index_url) ) subprocess.check_call(cmd) def initialize_options(self): DevelopDeprecationWarning.emit() def finalize_options(self) -> None: pass class DevelopDeprecationWarning(SetuptoolsDeprecationWarning): _SUMMARY = "develop command is deprecated." _DETAILS = """ Please avoid running ``setup.py`` and ``develop``. Instead, use standards-based tools like pip or uv. """ _SEE_URL = "https://github.com/pypa/setuptools/issues/917" _DUE_DATE = 2025, 10, 31