Upgrading setuptools 79 to 80
Breaking79.0.1 → 80.10.2Breaking2Deprecated4New1Changed4Fixed7Other4
BreakingUpgrade verdict
2 breaking changes.
In plain terms
- Two old modules that some tools imported are gone, so anything still using them will stop working.
- The old easy_install installer command and its sandbox helper are gone, so anything that still calls easy_install will stop working.
- The pkg_resources module will be removed in December this year, so users should plan to stop relying on it.
- The installer no longer relies on the old pkg_resources module, and the installer itself is officially scheduled to be deprecated on October 31, 2025.
Must act Top 5 of 6 that need code or config changes
What you must change
Breaking2
Removes the easy_install and package_index modules.
easy_installpackage_indexRemoves support for the easy_install command including the sandbox module.
easy_installsandboxDeprecations to plan for
Deprecated4
Sets a deadline of December this year for the removal of pkg_resources.
pkg_resourcesRemoves pkg_resources usage from installer and sets an official installer deprecation deadline of 2025-10-31.
pkg_resourcesAdds an Oct 31 deadline to the deprecation of setup.py install.
setup.py installDevelop command now defers to pip instead of easy_install, drops most options, and is a final warning before removal.
developeasy_installsetup.py developPEP 517API changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- removed:
method Command.ensure_string_list(option: str) -> None - changed:
function setup(**attrs) → function setup(**attrs) -> Distribution - changed:
method Command.reinitialize_command(command: str, reinit_subcommands: bool=…, **kw) -> _Command | (command: _CommandT, reinit_subcommands: bool=…, **kw) -> _CommandT → method Command.reinitialize_command(command: str, reinit_subcommands: bool=…, **kw) -> Command | (command: _CommandT, reinit_subcommands: bool=…, **kw) -> _CommandT
- changed:
function iter_symbols(code) → function iter_symbols(code: CodeType) -> Iterator[str] - changed:
function sorted_walk(dir) → function sorted_walk(dir: GenericPath[AnyStr]) -> Iterator[tuple[AnyStr, list[AnyStr], list[AnyStr]]] - changed:
function walk_egg(egg_dir) → function walk_egg(egg_dir: StrPath) -> Iterator[tuple[str, list[str], list[str]]] - changed:
method bdist_egg.run() → method bdist_egg.run() -> None - changed:
method bdist_egg.zap_pyfiles() → method bdist_egg.zap_pyfiles() -> None
- removed:
function if_dl(s) - changed:
method build_ext.run() → method build_ext.run() -> None - changed:
method build_ext.setup_shlib_compiler() → method build_ext.setup_shlib_compiler() -> None
- changed:
method build_py.finalize_options() → method build_py.finalize_options() -> None - changed:
method build_py.get_data_files_without_manifest() → method build_py.get_data_files_without_manifest() -> list[tuple[str, str, str, list[str]]] - changed:
method build_py.get_package_dir(package) → method build_py.get_package_dir(package: str) -> str
- removed:
class VersionlessRequirement - removed:
constructor VersionlessRequirement(dist) -> None - removed:
field develop.command_consumes_arguments - removed:
field develop.description - removed:
method VersionlessRequirement.as_requirement() - removed:
method develop.install_egg_scripts(dist) - removed:
method develop.install_for_development() -> None - removed:
method develop.install_wrapper_scripts(dist) - removed:
method develop.uninstall_link() -> None - changed:
class develop(namespaces.DevelopInstaller, easy_install) → class develop(Command) - changed:
method develop.initialize_options() → method develop.initialize_options() -> None - changed:
method develop.run() → method develop.run() -> None - added:
class DevelopDeprecationWarning(SetuptoolsDeprecationWarning) - added:
field develop.index_url - added:
field develop.install_dir - added:
field develop.no_deps - added:
field develop.prefix - added:
field develop.user
- removed:
class PthDistributions(Environment) - removed:
constructor PthDistributions(filename, sitedirs=…) -> None - removed:
field easy_install.DEFAULT_SCHEME - removed:
field easy_install.INSTALL_SCHEMES - removed:
field easy_install.boolean_options - removed:
field easy_install.command_consumes_arguments - removed:
field easy_install.create_index - removed:
field easy_install.description - removed:
field easy_install.negative_opt - removed:
field easy_install.user_options - removed:
function extract_wininst_cfg(dist_filename) - removed:
function get_exe_prefixes(exe_filename) - removed:
method PthDistributions.add(dist) -> None - removed:
method PthDistributions.make_relative(path) - removed:
method PthDistributions.remove(dist) -> None - removed:
method PthDistributions.save() -> None - removed:
method easy_install.add_output(path) -> None - removed:
method easy_install.build_and_install(setup_script, setup_base) - removed:
method easy_install.byte_compile(to_compile) -> None - removed:
method easy_install.cant_write_to_target() -> NoReturn - removed:
method easy_install.check_editable(spec) -> None - removed:
method easy_install.check_pth_processing() - removed:
method easy_install.check_site_dir() -> None - removed:
method easy_install.create_home_path() -> None - removed:
method easy_install.delete_blockers(blockers) -> None - removed:
method easy_install.easy_install(spec, deps: bool=…) -> Distribution | None - removed:
method easy_install.egg_distribution(egg_path) - removed:
method easy_install.exe_to_egg(dist_filename, egg_tmp) -> None - removed:
method easy_install.expand_basedirs() -> None - removed:
method easy_install.expand_dirs() -> None - removed:
method easy_install.finalize_options() -> None - removed:
method easy_install.initialize_options() - removed:
method easy_install.install_egg(egg_path, tmpdir) - removed:
method easy_install.install_egg_scripts(dist) -> None - removed:
method easy_install.install_eggs(spec, dist_filename, tmpdir) -> list[Distribution] - removed:
method easy_install.install_exe(dist_filename, tmpdir) - removed:
method easy_install.install_item(spec, download, tmpdir, deps, install_needed: bool=…) -> Distribution | None - removed:
method easy_install.install_script(dist, script_name, script_text, dev_path=…) -> None - removed:
method easy_install.install_wheel(wheel_path, tmpdir) - removed:
method easy_install.install_wrapper_scripts(dist) -> None - removed:
method easy_install.installation_report(req, dist, what: str=…) -> str - removed:
method easy_install.maybe_move(spec, dist_filename, setup_base) - removed:
method easy_install.not_editable(spec) -> None - removed:
method easy_install.process_distribution(requirement, dist, deps: bool=…, *info) -> None - removed:
method easy_install.pseudo_tempname() - removed:
method easy_install.report_editable(spec, setup_script) - removed:
method easy_install.run(show_deprecation: bool=…) -> None - removed:
method easy_install.run_setup(setup_script, setup_base, args) -> None - removed:
method easy_install.select_scheme(name) - removed:
method easy_install.should_unzip(dist) -> bool - removed:
method easy_install.unpack_and_compile(egg_path, destination) -> None - removed:
method easy_install.unpack_progress(src, dst) - removed:
method easy_install.update_pth(dist) -> None - removed:
method easy_install.warn_deprecated_options() -> None - removed:
method easy_install.write_script(script_name, contents, mode: str=…, blockers=…) -> None - removed:
variable PthDistributions
- removed:
property egg_info.tag_svn_revision -> None - added:
property egg_info.tag_svn_revision -> int | None
- removed:
method install.do_egg_install() -> None - removed:
method install.run()
- changed:
function walk_revctrl(dirname=…) → function walk_revctrl(dirname=…) -> Iterator - changed:
method sdist.read_manifest() → method sdist.read_manifest() -> None
- changed:
function edit_config(filename, settings, dry_run=…) → function edit_config(filename, settings, dry_run=…) -> None - changed:
method option_base.finalize_options() → method option_base.finalize_options() -> None
- removed:
property ConfigHandler.parsers - removed:
property ConfigMetadataHandler.parsers - removed:
property ConfigOptionsHandler.parsers - added:
property ConfigHandler.parsers -> dict[str, Callable] - added:
property ConfigMetadataHandler.parsers -> dict[str, Callable] - added:
property ConfigOptionsHandler.parsers -> dict[str, Callable]
- changed:
method Distribution.fetch_build_eggs(requires: _StrOrIter) -> list[_pkg_resources_Distribution] → method Distribution.fetch_build_eggs(requires: _StrOrIter) -> list[metadata.Distribution] - changed:
method Distribution.get_egg_cache_dir() → method Distribution.get_egg_cache_dir() -> str - changed:
method Distribution.iter_distribution_names() → method Distribution.iter_distribution_names() -> Iterator[str]
- changed:
constructor Extension(name: str, sources: list[StrPath], *args, py_limited_api: bool=…, **kw) -> None → constructor Extension(name: str, sources: Iterable[StrPath], *args, py_limited_api: bool=…, **kw) -> None
- changed:
function fetch_build_egg(dist, req) → function fetch_build_egg(dist, req) -> metadata.Distribution | metadata.PathDistribution - changed:
function strip_marker(req) → function strip_marker(req) -> packaging.requirements.Requirement
- removed:
property EnvironmentInfo.UCRTIncludes - removed:
property EnvironmentInfo.UCRTLibraries - removed:
property PlatformInfo.target_cpu - removed:
property RegistryInfo.microsoft_sdk -> str - removed:
property RegistryInfo.netfx_sdk - removed:
property RegistryInfo.sxs - removed:
property RegistryInfo.vc - removed:
property RegistryInfo.vc_for_python -> str - removed:
property RegistryInfo.visualstudio -> str - removed:
property RegistryInfo.vs - removed:
property RegistryInfo.windows_kits_roots -> str - removed:
property RegistryInfo.windows_sdk - removed:
property SystemInfo.FSharpInstallDir - removed:
property SystemInfo.FrameworkDir32 - removed:
property SystemInfo.FrameworkDir64 - removed:
property SystemInfo.NetFxSdkDir - removed:
property SystemInfo.NetFxSdkVersion - removed:
property SystemInfo.UniversalCRTSdkDir - removed:
property SystemInfo.UniversalCRTSdkLastVersion - removed:
property SystemInfo.VCInstallDir - removed:
property SystemInfo.VSInstallDir - removed:
property SystemInfo.WindowsSDKExecutablePath - removed:
property SystemInfo.WindowsSdkDir -> str | None - removed:
property SystemInfo.WindowsSdkLastVersion - changed:
constructor PlatformInfo(arch) -> None → constructor PlatformInfo(arch: str) -> None - changed:
constructor RegistryInfo(platform_info) -> None → constructor RegistryInfo(platform_info: PlatformInfo) -> None - changed:
constructor SystemInfo(registry_info, vc_ver=…) -> None → constructor SystemInfo(registry_info: RegistryInfo, vc_ver: float | None=…) -> None - changed:
method PlatformInfo.cross_dir(forcex86=…) → method PlatformInfo.cross_dir(forcex86=…) -> str - changed:
method PlatformInfo.current_is_x86() → method PlatformInfo.current_is_x86() -> bool - changed:
method PlatformInfo.target_is_x86() → method PlatformInfo.target_is_x86() -> bool - changed:
method RegistryInfo.lookup(key, name) → method RegistryInfo.lookup(key: str, name: str) -> str | None - changed:
method RegistryInfo.microsoft(key, x86=…) → method RegistryInfo.microsoft(key: LiteralString, x86: bool=…) -> LiteralString | (key: str, x86: bool=…) -> str - changed:
method SystemInfo.find_reg_vs_vers() → method SystemInfo.find_reg_vs_vers() -> list[float] - added:
property EnvironmentInfo.UCRTIncludes -> list[str] - added:
property EnvironmentInfo.UCRTLibraries -> list[str] - added:
property PlatformInfo.target_cpu -> str - added:
property RegistryInfo.microsoft_sdk -> LiteralString - added:
property RegistryInfo.netfx_sdk -> LiteralString - added:
property RegistryInfo.sxs -> LiteralString - added:
property RegistryInfo.vc -> LiteralString - added:
property RegistryInfo.vc_for_python -> LiteralString - added:
property RegistryInfo.visualstudio -> LiteralString - added:
property RegistryInfo.vs -> LiteralString - added:
property RegistryInfo.windows_kits_roots -> LiteralString - added:
property RegistryInfo.windows_sdk -> LiteralString - added:
property SystemInfo.FSharpInstallDir -> str - added:
property SystemInfo.FrameworkDir32 -> str - added:
property SystemInfo.FrameworkDir64 -> str - added:
property SystemInfo.NetFxSdkDir -> str | None - added:
property SystemInfo.NetFxSdkVersion -> tuple[LiteralString, ...] - added:
property SystemInfo.UniversalCRTSdkDir -> str | None - added:
property SystemInfo.UniversalCRTSdkLastVersion -> str - added:
property SystemInfo.VCInstallDir -> str - added:
property SystemInfo.VSInstallDir -> str - added:
property SystemInfo.WindowsSDKExecutablePath -> str | None - added:
property SystemInfo.WindowsSdkDir -> str - added:
property SystemInfo.WindowsSdkLastVersion -> str
- removed:
class PackageIndex(Environment) - removed:
constructor PackageIndex(index_url: str=…, hosts=…, ca_bundle=…, verify_ssl: bool=…, *args, **kw) -> None - removed:
field PackageIndex.dl_blocksize - removed:
function distros_for_url(url, metadata=…) - removed:
function interpret_distro_name(location, basename, metadata, py_version=…, precedence=…, platform=…) - removed:
function parse_bdist_wininst(name) - removed:
method PackageIndex.add(dist) - removed:
method PackageIndex.add_find_links(urls) -> None - removed:
method PackageIndex.check_hash(checker, filename, tfp) -> None - removed:
method PackageIndex.debug(msg, *args) -> None - removed:
method PackageIndex.download(spec, tmpdir) - removed:
method PackageIndex.fetch(requirement, tmpdir, force_scan: bool=…, source: bool=…) -> str | None - removed:
method PackageIndex.fetch_distribution(requirement, tmpdir, force_scan: bool=…, source: bool=…, develop_ok: bool=…, local_index=…) -> Distribution | None - removed:
method PackageIndex.find_packages(requirement) -> None - removed:
method PackageIndex.gen_setup(filename, fragment, tmpdir) - removed:
method PackageIndex.info(msg, *args) -> None - removed:
method PackageIndex.need_version_info(url) -> None - removed:
method PackageIndex.not_found_in_index(requirement) -> None - removed:
method PackageIndex.obtain(requirement, installer=…) - removed:
method PackageIndex.open_url(url, warning=…) - removed:
method PackageIndex.prescan() - removed:
method PackageIndex.process_filename(fn, nested: bool=…) -> None - removed:
method PackageIndex.process_index(url, page) - removed:
method PackageIndex.process_url(url, retrieve: bool=…) -> None - removed:
method PackageIndex.reporthook(url, filename, blocknum, blksize, size) -> None - removed:
method PackageIndex.scan_all(msg=…, *args) -> None - removed:
method PackageIndex.scan_egg_link(path, entry) -> None - removed:
method PackageIndex.scan_egg_links(search_path) -> None - removed:
method PackageIndex.scan_url(url) -> None - removed:
method PackageIndex.url_ok(url, fatal: bool=…) -> bool - removed:
method PackageIndex.warn(msg, *args) -> None
- removed:
class AbstractSandbox - removed:
class DirectorySandbox(AbstractSandbox) - removed:
class SandboxViolation(DistutilsError) - removed:
constructor AbstractSandbox() -> None - removed:
constructor DirectorySandbox(sandbox, exceptions=…) -> None - removed:
field DirectorySandbox.write_ops: ClassVar[dict[str, None]] - removed:
field SandboxViolation.tmpl - removed:
function run_setup(setup_script, args) - removed:
method AbstractSandbox.run(func) - removed:
method DirectorySandbox.open(file, flags, mode: int=…, *args, **kw) -> int - removed:
method DirectorySandbox.tmpnam() -> None
- changed:
function disable_info_traces() → function disable_info_traces() -> Iterator[None]