Skip to content

Upgrading setuptools 79 to 80

Breaking79.0.1 → 80.10.2Breaking2Deprecated4New1Changed4Fixed7Other4

BreakingUpgrade verdict

2 breaking changes.

  • 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.
Top 5 of 6 that need code or config changes
Breaking2
Removes the easy_install and package_index modules.
easy_installpackage_index
Removes support for the easy_install command including the sandbox module.
easy_installsandbox
Deprecated4
Sets a deadline of December this year for the removal of pkg_resources.
pkg_resources
Removes pkg_resources usage from installer and sets an official installer deprecation deadline of 2025-10-31.
pkg_resources
Adds an Oct 31 deadline to the deprecation of setup.py install.
setup.py install
Develop command now defers to pip instead of easy_install, drops most options, and is a final warning before removal.
developeasy_installsetup.py developPEP 517

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]