Movatterモバイル変換


[0]ホーム

URL:


ContentsMenuExpandLight modeDark modeAuto light/dark, in light modeAuto light/dark, in dark modeSkip to content
setuptools 80.9.0 documentation
Logo

Links

Project

Back to top

History

DRAFT, unreleased as on Oct 31, 2025

Features

  • Remove post-release tags on setuptools’ own build. (#4530)

Misc

  • #5033

v80.9.0

26 May 2025

Features

  • Set a deadline for the removal of pkg_resources later this year (December). (#3085)

  • Removed reliance on pkg_resources in test_wheel. (#3085)

v80.8.0

20 May 2025

Features

  • Replaced more references to pkg_resources with importlib equivalents in wheel odule. (#3085)

  • Restore explicit LICENSE file. (#5001)

  • Removed no longer used build dependency oncoherent.licensed. (#5003)

v80.7.1

14 May 2025

Bugfixes

  • Only attempt to fetch eggs for unsatisfied requirements. (#4998)

  • In installer, when discovering egg dists, let metadata discovery search each egg. (#4998)

v80.7.0

14 May 2025

Features

  • Removed usage of pkg_resources from installer. Set an official deadline on the installer deprecation to 2025-10-31. (#4997)

Misc

v80.6.0

14 May 2025

Features

  • Added a build dependency on coherent.licensed to inject the declared license text at build time. (#4981)

Misc

v80.5.0

11 May 2025

Features

  • Replaced more references to pkg_resources with importlib equivalents. (#3085)

Misc

v80.4.0

09 May 2025

Features

  • Simplified the error reporting in editable installs. (#4984)

v80.3.1

04 May 2025

Bugfixes

  • Restored select attributes in easy_install for temporary pbr compatibility. (#4976)

v80.3.0

03 May 2025

Features

  • Removed easy_install and package_index modules. (#917)

  • Restored license declaration in package metadata. See jaraco/skeleton#171. (#4956)

v80.2.0

02 May 2025

Features

  • Restored support for install_scripts –executable (and classic behavior for the executable for those invocations). Instead, build_editable provides the portable form of the executables for downstream installers to rewrite. (#4934)

v80.1.0

30 Apr 2025

Features

  • Added a deadline of Oct 31 to the setup.py install deprecation.

Bugfixes

  • Withsetup.pyinstall--prefix=..., fall back to distutils install rather than failing. Note that runningsetup.pyinstall is deprecated. (#3143)

v80.0.1

29 Apr 2025

Bugfixes

  • Fixed index_url logic in develop compatibility shim. (#4966)

v80.0.0

27 Apr 2025

Bugfixes

  • Update test to honor new behavior in importlib_metadata 8.7. (#4961)

Deprecations and Removals

  • Removed support for the easy_install command including the sandbox module. (#2908)

  • Develop command no longer uses easy_install, but instead defers execution to pip (which then will re-invoke Setuptools viaPEP 517 to build the editable wheel). Most of the options to develop are dropped. This is the final warning before the command is dropped completely in a few months. Use-cases relying on ‘setup.py develop’ should pin to older Setuptools version or migrate to modern build tooling. (#4955)

v79.0.1

23 Apr 2025

Bugfixes

v79.0.0

20 Apr 2025

Deprecations and Removals

  • Removed support for ‘legacy-editable’ installs. (#917)

v78.1.1

19 Apr 2025

Bugfixes

  • More fully sanitized the filename in PackageIndex._download. (#4946)

v78.1.0

25 Mar 2025

Features

  • Restore access to _get_vc_env with a warning. (#4874)

v78.0.2

24 Mar 2025

Bugfixes

  • Postponed removals of deprecated dash-separated and uppercase fields insetup.cfg.All packages with deprecated configurations are advised to move before 2026. (#4911)

v78.0.1

24 Mar 2025

Misc

v78.0.0

23 Mar 2025

Bugfixes

  • Reverted distutils changes that broke the monkey patching of command classes. (#4902)

Deprecations and Removals

  • Setuptools no longer accepts options containing uppercase or dash characters insetup.cfg.Please ensure to write the options insetup.cfg using thelower_snake_case convention(e.g.Name=>name,install-requires=>install_requires).This is a follow-up on deprecations introduced inv54.1.0 (see#1608) andv54.1.1 (see#2592).

    Note

    This changedoes not affect configurations inpyproject.toml(which uses thelower-kebab-case convention following the precedent set inPEP 517/PEP 518). (#4870)

Misc

v77.0.3

20 Mar 2025

Bugfixes

  • Temporarily convert error for license glob patterns containing../ into a deprecation warningto allow an accomodation period. (#4896)

  • Better error messages forpackaging.licenses import errors in environments withpackaging<24.2.The import statement was also deferred to spare users that are not usinglicense expressions. (#4898)

  • Avoided eagerly raising an exception whenlicense-files is definedsimultaneously inside and outside ofpyproject.toml.Instead we rely on the existing deprecation error. (#4899)

v77.0.2

19 Mar 2025

Bugfixes

  • Restoredistutils.ccompiler._default_compilers – by@ManiacDC (#4876)

  • Fixed copy pasta inmsvc.shared_lib_format. (#4885)

v77.0.1

19 Mar 2025

Bugfixes

  • Manually fix news fragment entries causing CI to crash when building docs. (#4891)

v77.0.0

19 Mar 2025

Features

  • Added initial support for license expression (PEP639). – by@cdce8p (#4706)

  • StoreLicense-Files in.dist-info/licenses subfolder and added support for recursive globs forlicense_files (PEP639). – by@cdce8p (#4728)

  • Bump core metadata version to2.4. – by@cdce8p (#4830)

  • Updated vendored copy ofwheel tov0.45.1. (#4869)

Deprecations and Removals

  • Added initial implementation ofPEP 639.Users relying on pre-PEP 639 implementation details(like precise license file paths insidedist-info directory)may need to adjust their code base to avoid problems.Deprecations and stronger validation were also introduced (#4829).

  • Added exception (or warning) when deprecated license classifiers are used,according to PEP639. (#4833)

  • Deprecatedtools.setuptools.license-files in favor ofproject.license-filesand added exception ifproject.license-files andtools.setuptools.license-filesare used together. – by@cdce8p (#4837)

  • Deprecatedproject.license as a TOML table inpyproject.toml. Users are expected to move towards usingproject.license-files and/or SPDX expressions (as strings) inproject.license.See PEP639. (#4840)

  • Added simple validation for given glob patterns inlicense-files:a warning will be generated if no file is matched.Invalid glob patterns can raise an exception.– thanks@cdce8p for contributions. (#4838)

Misc

v76.1.0

17 Mar 2025

Features

  • In setuptools.msvc.EnvironmentInfo, now honor the correct paths when on an ARM host. (#4786)

Bugfixes

  • Restored implicit distutils.ccompiler import for g-ir-scanner. (#4871)

  • Restoredistutils.ccompiler.compiler_class – by@Avasam (#4876)

v75.3.2

11 Mar 2025

  • Fixed version error in changelog.

v75.3.1

11 Mar 2025

Bugfixes

  • Fix wheel file naming to follow binary distribution specification – by@di (#4877)

v76.0.0

09 Mar 2025

Deprecations and Removals

v75.9.1

08 Mar 2025

Bugfixes

  • Fix ImportError in distutils when configuring for linking. (#4866)

v75.9.0

08 Mar 2025

Features

v75.8.2

26 Feb 2025

Bugfixes

  • Fixedpkg_resources.require(...) to also consider standardiseddist-info directories. (#4856)

v75.8.1

25 Feb 2025

Bugfixes

  • Fix wheel file naming to follow binary distribution specification – by@di (#4766)

  • Fixed crash generating error message printed when building wheels for thefree-threaded build using the limited API. – by@ngoldbaum (#4809)

  • Fix documentation for recent CFLAGS distutils change. – by@thesamesam (#4836)

v75.8.0

08 Jan 2025

Features

  • ImplementedDynamic field for core metadata (as introduced inPEP 643).The existing implementation is currently experimental and the exact approachmay change in future releases. (#4698)

v75.7.0

05 Jan 2025

Features

v75.6.0

20 Nov 2024

Features

  • Preserve originalPKG-INFO intoMETADATA when creating wheel(instead of callingwheel.metadata.pkginfo_to_metadata).This helps to be more compliant with the flow specified inPEP 517. (#4701)

  • Changed theWindowsSdkVersion,FrameworkVersion32 andFrameworkVersion64 properties ofsetuptools.msvc.PlatformInfo to return an emptytuple instead ofNone as a fallthrough case – by@Avasam (#4754)

v75.5.0

13 Nov 2024

Features

  • Removed support forSETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION, as itis deemed prone to errors. (#4746)

v75.4.0

11 Nov 2024

Features

  • Added support for the environment variableSETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION=true, allowing users to bypassthe validation ofpyproject.toml.This option should be used only as a last resort when resolving dependencyissues, as it may lead to improper functioning.Users who enable this setting are responsible for ensuring thatpyproject.tomlcomplies with setuptools requirements. (#4611)

    Attention

    This environment variable was removed in a later version ofsetuptools.

  • Require Python 3.9 or later. (#4718)

  • Remove dependency onimportlib_resourcesand the vendored copy of the library.Instead,setuptools consistently rely on stdlib’simportlib.resources(available on Python 3.9+). (#4718)

  • Setuptools’bdist_wheel implementation no longer produces wheels withthem SOABI flag (pymalloc-related).This flag was removed on Python 3.8+ (seesys.abiflags). (#4718)

  • Updated vendored packaging version to 24.2. (#4740)

Bugfixes

v75.3.0

29 Oct 2024

Features

  • Allowed usingdict as an ordered type insetuptools.dist.check_requirements – by@Avasam (#4575)

Bugfixes

  • Ensured methods insetuptools.modified preferably raise a consistentdistutils.errors.DistutilsError type(except in the deprecated use case ofSETUPTOOLS_USE_DISTUTILS=stdlib)– by@Avasam (#4567)

  • Fix the ABI tag when building a wheel using the debug build of Python 3.13 on Windows. Previously, the ABI tag was missing the"d" flag. (#4674)

  • Fix clashes foroptional-dependencies inpyproject.toml andextra_requires insetup.cfg/setup.py.As perPEP 621,optional-dependencies have to be honoured and dynamicbehaviour is not allowed. (#4696)

Misc

v75.2.0

16 Oct 2024

Features

  • Made errors when parsingDistribution data more explicit about the expected type (tuple[str,...]|list[str]) – by@Avasam (#4578)

Bugfixes

  • Fix aTypeError when aDistribution’s old included attribute was atuple – by@Avasam (#4578)

  • Add workaround forbdist_wheel--dist-info-dir errorswhen customisation does not inherit from setuptools. (#4684)

v75.1.1

15 Oct 2024

Bugfixes

  • Re-use pre-existing.dist-info dir when creating wheels via the build backend APIs (PEP 517) and themetadata_directory argument is passed – by@pelson. (#1825)

  • Changedegg_info command to avoid adding an empty.egg-info directorywhile iterating over entry-points.This avoids triggering integration problems withimportlib.metadata/importlib_metadata(reference:pypa/pyproject-hooks#206). (#4680)

v75.1.0

16 Sep 2024

Features

  • Deprecatedbdist_wheel.universal configuration. (#4617)

Bugfixes

  • Removed reference to upload_docs module in entry points. (#4650)

v75.0.0

15 Sep 2024

Features

  • Declare also the dependencies used by distutils (adds jaraco.collections).

Deprecations and Removals

  • Removed upload_docs command. (#2971)

  • Merge withpypa/distutils@7283751. Removed the register and upload commands and the config module that backs them (pypa/distutils#294). Removed the borland compiler. Replaced vendored dependencies with natural dependencies. Cygwin C compiler now gets compilers from sysconfig (pypa/distutils#296). (#4649)

v74.1.3

15 Sep 2024

Bugfixes

v74.1.2

04 Sep 2024

Bugfixes

  • Fixed TypeError in sdist filelist processing by adding support for pathlib Paths for the build_base. (#4615)

  • Removed degraded and deprecatedtest_integration (easy_install) from the test suite. (#4632)

v74.1.1

03 Sep 2024

Bugfixes

  • Fixed TypeError inmsvc.EnvironmentInfo.return_env when no runtime redistributables are installed. (#1902)

v74.1.0

02 Sep 2024

Features

  • Added support for definingext-modules viapyproject.toml(EXPERIMENTAL, may change in future releases). (#4568)

Bugfixes

v74.0.0

27 Aug 2024

Features

  • Changed the type of error raised bysetuptools.command.easy_install.CommandSpec.from_param on unsupported argument fromAttributeError toTypeError – by@Avasam (#4548)

  • Added detection of ARM64 variant of MSVC – by@saschanaz (#4553)

  • Madesetuptools.package_index.Credential atyping.NamedTuple – by@Avasam (#4585)

  • Reraise error fromsetuptools.command.easy_install.auto_chmod instead of nonsensicalTypeError:'Exception'objectisnotsubscriptable – by@Avasam (#4593)

  • Fully typed all collection attributes inpkg_resources – by@Avasam (#4598)

  • Automatically exclude.tox|.nox|.venv directories fromsdist. (#4603)

Deprecations and Removals

Misc

v73.0.1

20 Aug 2024

Bugfixes

  • Removeabc.ABCMeta metaclass from abstract classes.pypa/setuptools#4503<https://github.com/pypa/setuptools/issues/4503>`_<https://github.com/pypa/setuptools/pull/4503>`_hadanunintendedconsequenceofcausingpotential``TypeError:metaclassconflict:themetaclassofaderivedclassmustbea(non-strict)subclassofthemetaclassesofallitsbases – by@Avasam (#4579)

v73.0.0

19 Aug 2024

Features

Bugfixes

Deprecations and Removals

  • setuptools is replacing the usages ofordered_set with simpleinstances ofdict[Hashable,None]. This is done to remove the extradependency and it is possible because since Python 3.7,dict maintaininsertion order. (#4574)

Misc

v72.2.0

02 Aug 2024

Features

v72.1.0

29 Jul 2024

Features

  • Restore the tests command and deprecate access to the module. (#4519) (#4520)

v72.0.0

28 Jul 2024

Deprecations and Removals

  • The test command has been removed. Users relying on ‘setup.py test’ will need to migrate to another test runner or pin setuptools before this version. (#931)

v71.1.0

21 Jul 2024

Features

Misc

v71.0.4

19 Jul 2024

Bugfixes

  • Removed lingering unused code around Distribution._patched_dist. (#4489)

v71.0.3

18 Jul 2024

Bugfixes

  • Reset the backports module when enabling vendored packages. (#4476)

v71.0.2

18 Jul 2024

Bugfixes

  • Include all vendored files in the sdist. (#4480)

v71.0.1

17 Jul 2024

Bugfixes

  • Restored package data that went missing in 71.0. This change also incidentally causes tests to be installed once again. (#4475)

v71.0.0

17 Jul 2024

Deprecations and Removals

  • Now setuptools declares its own dependencies in thecore extra. Dependencies are still vendored for bootstrapping purposes, but setuptools will prefer installed dependencies if present. Thecore extra is used for informational purposes and shouldnot be declared in package metadata (e.g.build-requires). Downstream packagers can de-vendor by simply removing thesetuptools/_vendor directory. Since Setuptools now prefers installed dependencies, those installing to an environment with old, incompatible dependencies will not work. In that case, either uninstall the incompatible dependencies or upgrade them to satisfy those declared incore. (#2825)

v70.3.0

09 Jul 2024

Features

  • Support for loading distutils from the standard library is now deprecated, including use of SETUPTOOLS_USE_DISTUTILS=stdlib and importing distutils before importing setuptools. (#4137)

Bugfixes

v70.2.0

01 Jul 2024

Features

  • Updated distutils including significant changes to support Cygwin and mingw compilers. (#4444)

Bugfixes

  • Fix distribution name normalisation (PEP 625) for valid versions that arenot canonical (e.g.1.0-2). (#4434)

v70.1.1

25 Jun 2024

Misc

v70.1.0

19 Jun 2024

Features

  • Adopted thebdist_wheel command from thewheel project – by@agronholm (#1386)

  • Improve error message whenpkg_resources.ZipProvider tries to extract resources with a missing Egg – by@Avasam

    Added variables and parameter type annotations topkg_resources to be nearly on par with typeshed.* – by@Avasam* ExcludingTypeVar andoverload. Return types are currently inferred. (#4246)

  • Migrated Setuptools’ own config to pyproject.toml (#4310)

Bugfixes

  • Prevent aTypeError:'NoneType'objectisnotcallable whenshutil_rmtree is called without anonexc parameter on Python<=3.11 – by@Avasam (#4382)

  • Replace use of mktemp with can_symlink from the stdlib test suite. (#4403)

  • Improvement forattr: directives in configuration to handlemore edge cases related to complexpackage_dir. (#4405)

  • Fix accidental implicit string concatenation. (#4411)

Misc

v70.0.0

21 May 2024

Features

Bugfixes

  • In install command, use super to call the superclass methods. Avoids race conditions when monkeypatching from _distutils_system_mod occurs late. (#4136)

  • Fix finder template for lenient editable installs of implicit nested namespacesconstructed by usingpackage_dir to reorganise directory structure. (#4278)

  • Fix an error withUnicodeDecodeError handling inpkg_resources when trying to read files in UTF-8 with a fallback – by@Avasam (#4348)

Improved Documentation

  • Uses RST substitution to put badges in 1 line. (#4312)

Deprecations and Removals

  • Further adoption of UTF-8 insetuptools.This change regards mostly files produced and consumed during the build process(e.g. metadata files, script wrappers, automatically updated config files, etc..)Although precautions were taken to minimize disruptions, some edge cases mightbe subject to backwards incompatibility.

    Support for"locale" encoding is nowdeprecated. (#4309)

  • Removesetuptools.convert_path after long deprecation period.This function was never defined bysetuptools itself, but rather aside-effect of an import for internal usage. (#4322)

  • Remove fallback for customisations ofdistutilsbuild.sub_command after longdeprecated period.Users are advised to importbuild directly fromsetuptools.command.build. (#4322)

  • Removedtyping_extensions from vendored dependencies – by@Avasam (#4324)

  • Remove deprecatedsetuptools.dep_util.The provided alternative issetuptools.modified. (#4360)

Misc

v69.5.1

13 Apr 2024

No significant changes.

v69.5.0

13 Apr 2024

Features

  • Refresh unpinned vendored dependencies. (#4253)

  • Updated vendored packaging to version 24.0. (#4301)

v69.4.2

13 Apr 2024

Bugfixes

v69.4.1

13 Apr 2024

No significant changes.

v69.4.0

12 Apr 2024

Features

v69.3.1

13 Apr 2024

Bugfixes

  • Remove attempt to canonicalize the version. It’s already canonical enough. (#4302)

v69.3.0

12 Apr 2024

Features

  • SupportPEP 625 by canonicalizing package name and version in filenamesperthe spec.Projects whose names contain uppercase characters, dashes, or periods willnow see their sdist names normalized to match the standard and the formatpreviously seen in wheels. For example:

    • zope.interface ->zope_interface

    • CherryPy ->cherrypy

    • foo-bar_baz ->foo_bar_baz

    Projects are encouraged to adopt this change to align with standards andother backend build systems. (#3593)

v69.2.0

13 Mar 2024

Features

  • Explicitly useencoding="locale" for.pth files whenever possible,to reduceEncodingWarnings.This avoid errors with UTF-8 (see discussion inpython/cpython#77102). (#4265)

Bugfixes

Misc

v69.1.1

23 Feb 2024

Bugfixes

Misc

v69.1.0

11 Feb 2024

Features

Bugfixes

  • In tests, rely on pytest-home for reusable fixture. (#4072)

  • Explicitly marked asProtocol and fixed missingself argument in interfacespkg_resources.IMetadataProvider andpkg_resources.IResourceProvider – by@Avasam (#4144)

  • Restored expectation that egg-link files would be named with dash separators for compatibility with pip prior to version 24. (#4167)

Improved Documentation

  • Updated documentation referencing obsolete Python 3.7 code. – by@Avasam (#4096)

  • Changedversionadded for “Type information included by default” feature fromv68.3.0 tov69.0.0 – by@Avasam (#4182)

  • Described the auto-generated files – by@VladimirFokow (#4198)

  • Updated “Quickstart” to describe the current status ofsetup.cfg andpyproject.toml – by@VladimirFokow (#4200)

v69.0.3

23 Dec 2023

Bugfixes

  • Retain valid names with underscores in egg_info.

v69.0.2

21 Nov 2023

Bugfixes

  • Added missing estimated date for removingsetuptools.dep_util (deprecated in v69.0.0). (#4131)

v69.0.1

21 Nov 2023

Bugfixes

  • Fixed imports ofsetuptools.dep_util.newer_group.A deprecation warning is issued instead of a hard failure. (#4126)

v69.0.0

20 Nov 2023

Features

Bugfixes

  • Replaced hardcoded numeric values withdis.opmap,fixing problem with 3.13.0a1. (#4094)

Deprecations and Removals

  • Configuring projectversion andegg_info.tag_* in such a way thatresults in invalid version strings (according toPEP 440) is no longer permitted. (#4066)

  • Removed deprecatedegg_base option fromdist_info.Note that thedist_info command is considered internal to the waysetuptools build backend works and not intended forpublic usage. (#4066)

  • The parsing of the deprecatedmetadata.license_file andmetadata.requires fields insetup.cfg is no longer supported.Users are expected to move tometadata.license_files andoptions.install_requires (respectively). (#4066)

  • Passingconfig_settings tosetuptools.build_meta withdeprecated values for--global-option is no longer allowed. (#4066)

  • Removed deprecatednamespace-packages frompyproject.toml.Users are asked to useimplicit namespace packages(as defined inPEP 420). (#4066)

  • Added strict enforcement forproject.dynamic inpyproject.toml.This removes the transitional ability of users configuring certain parametersviasetup.py without making the necessary changes topyproject.toml(as mandated byPEP 621). (#4066)

  • Removed handling of--config-settings["--build-option"] insetuptools.build_metafrom build-backend API hooksother thanbuild_wheel.This was motivate byerrors caused when passing this option. (#4079)

v68.2.2

12 Sep 2023

Bugfixes

  • Improve backwards compatibility with deprecated CLI practices. (#4048)

v68.2.1

11 Sep 2023

Bugfixes

  • Avoid using caching attributes inDistribution.metadata for requirements.This is done for backwards compatibility with customizations that attempt tomodifyinstall_requires orextras_require at a late point (still notrecommended). (#4043)

Misc

v68.2.0

06 Sep 2023

Features

  • Rework howsetuptools internally handlesdependencies/install_requiresandoptional-dependencies/extras_require. (#3903)

  • Improve the generatedPKG-INFO files, by addingRequires-Dist fields.Previously, these fields would be omitted in favour of a non-standard*.egg-info/requires.txt file (which is still generated for the time being). (#3904)

  • Improve atomicity when writingPKG-INFO files to avoid raceconditions withimportlib.metadata. (#3904)

Bugfixes

  • Fix the name given to the*-nspkg.pth files in editable installs,ensuring they are unique per distribution. (#4041)

  • Workaround some limitations onpkg_resources-style legacy namespaces inthe meta path finder for editable installations. (#4041)

Misc

v68.1.2

18 Aug 2023

Misc

v68.1.1

18 Aug 2023

Bugfixes

  • Fix editable install finder handling of nested packages, by only handling 1level of nesting and relying onimportlib.machinery to find the remainingmodules based on the parent package path. (#4020)

v68.1.0

15 Aug 2023

Features

  • Removed code referencing bdist_wininst in install_scripts. (#3525)

  • Promotepyproject.toml’s[tool.setuptools] out of beta.Note that some fields are still considered deprecated and/or obsolete,and these might be removed in future versions (i.e., there is no guaranteefor long term support and backward compatibility on those fields). (#3962)

  • Automatically add files listed inExtension.depends to sdists,as long as they are contained in the project directory – by@RuRo (#4000)

  • Require Python 3.8 or later.

Bugfixes

  • Made imports in editable installs case-sensitive on case-insensitive filesystems – by@aganders3 (#3995)

  • Use default encoding to create.pth files witheditable_wheel. (#4009)

  • Detects (and complain about)scripts andgui-scripts set viasetup.pywhenpyproject.toml does not include them indynamic. (#4012)

Misc

v68.0.0

19 Jun 2023

Breaking Changes

  • #3948: Removed verification for existingdepends.txt file (deprecated since v0.5a4).

  • #3948: Remove autofixing of broken.egg-info directories containing the-character in their base name (without suffix).They should no longer be produced by sufficiently new versions ofsetuptools(warning introduced in 2005).

  • #3948: Remove deprecated APIs ineasy_install:get_script_args,get_script_header andget_writer.The direct usage ofeasy_install has been deprecated since v58.3.0,and the warnings regarding these APIs predate that version.

  • #3948: Removedegg_info.get_pkg_info_revision (deprecated since 2015).

  • #3948: Removedsetuptools.dist._get_unpatched (deprecated since 2016)

  • #3948: Removed support for SVN insetuptools.package_index (deprecated since 2018).

  • #3948: Removed support for invalidpyproject.toml files.During the implementation ofPEP 621, it was identified that some users wereproducing invalid files. As a transitional measure, the validation was relaxedfor a few use cases. The grace period, however, came to an end.

Changes

  • #3760: Added symlink support to launcher for installed executables – by@eugene-sevostianov-sc

  • #3926: Updated vendoredpackaging version from 23.0 to 23.1 – by@MetRonnie

  • #3950: Implemented workaround for old versions ofvswhere, which miss the-requiresAny parameter, such as the ones distributed together with Visual Studio 2017 < 15.6.

  • #3952: ChangedDistutilsMetaFinder to skipspec_for_pip on Python >= 3.12.

  • #3952: Removed_distutils_hack.remove_shim on Python >= 3.12(sincedistutils was removed from the standard library,DistutilsMetaFinder cannot be disabled on Python >= 3.12).

Misc

  • #3920: Add a link to deprecation warning inpkg_resources and improvestacklevel for better visibility.

v67.8.0

19 May 2023

Changes

  • #3128: In deprecated easy_install, reload and merge the pth file before saving.

Misc

  • #3915: Adequate tests to the latest changes invirtualenv for Python 3.12.

v67.7.2

24 Apr 2023

Misc

  • #3902: Fixed wrong URLs used in warnings and logs.

v67.7.1

21 Apr 2023

Misc

  • #3898: Fixes setuptools.dist:invalid_unless_false when value is false don’t raise error – by@jammarher

v67.7.0

20 Apr 2023

Changes

  • #3849: Overhaul warning system for better visibility.

Documentation changes

  • #3859: Added a note about historical presence ofwheelinbuild-system.requires, inpyproject.toml.

  • #3893: Improved the documentation example regarding making a thinPEP 517 in-treebackend wrapper ofsetuptools.build_meta that is future-proof and supportsPEP 660 hook too – by@webknjaz.

Misc

  • #3884: Add astacklevel parameter towarnings.warn() to provide more information to the user.– by@cclauss

v67.6.1

28 Mar 2023

Misc

  • #3865: Fixed_WouldIgnoreField warnings forscripts andgui_scripts,whenentry-points is not listed in dynamic.

  • #3875: Update code generated byvalidate-pyproject to use v0.12.2.This should fix default license patterns whenpyproject.toml is used.

v67.6.0

08 Mar 2023

Changes

  • #3804: Added caching for supported wheel tags.

  • #3846: Added pruning heuristics toPackageFinder based onexclude.

v67.5.1

06 Mar 2023

Misc

  • #3836: Fixed interaction betweensetuptools’ package auto-discovery andauto-generatedhtmlcov files.

    Previously, thehtmlcov name was ignored when searching for single-filemodules, however the correct behaviour is to ignore it when searching forpackages (since it is supposed to be a directory, seecoverage config)– by@yukihiko-shinoda.

  • #3838: Improved error messages forpyproject.toml validations.

  • #3839: Fixedpkg_resources errors caused when parsing metadata of packages thatare already installed but do not conform withPEP 440.

v67.5.0

05 Mar 2023

Changes

  • #3843: Although pkg_resources has been discouraged for use, some projects still consider pkg_resources viable for usage. This change makes it clear that pkg_resources should not be used, emitting a DeprecationWarning when imported.

v67.4.0

21 Feb 2023

Changes

  • #3832: Update vendoredimportlib-metadata (to 6.0.0) andimportlib-resources (to 5.10.2)

v67.3.3

20 Feb 2023

Misc

  • #3820: Restore quoted#include argument tohas_function.

v67.3.2

15 Feb 2023

Misc

  • #3827: Improve deprecation warning message onpkg_resources.declare_namespaceto display package name.

v67.3.1

14 Feb 2023

Misc

  • #3823: Fixesegg_info code path triggered during integration withpip.

v67.3.0

13 Feb 2023

Deprecations

  • #3434: Added deprecation warning forpkg_resources.declare_namespace.Users that wish to implement namespace packages, are recommended to follow thepractice described inPEP 420 and omit the__init__.py file entirely.

Changes

  • #3792: Reduced usage ofpkg_resources insetuptools via internalrestructuring and refactoring.

Misc

  • #3822: Added debugging tips for “editable mode” and update related docs.Instead of using a custom exception to display the help message to the user,setuptools will now use a warning and re-raise the original exception.

  • #3822: Added clarification abouteditable_wheel anddist_info CLI commands:they should not be called directly withpythonsetup.py....Instead they are reserved for internal use ofsetuptools (effectively as “private” commands).Users are recommended to rely on build backend APIs (PEP 517 andPEP 660)exposed bysetuptools.build_meta.

v67.2.0

06 Feb 2023

Changes

v67.1.0

01 Feb 2023

Changes

  • #3795: Ensured that__file__ is an absolute path when executingsetup.py aspart ofsetuptools.build_meta.

Misc

  • #3798: Updated validations forpyproject.toml usingvalidate-pyproject==0.12.1to allow stub packages (PEP 561) to be listed intool.setuptools.packagesandtool.setuptools.package-dir.

v67.0.0

28 Jan 2023

Breaking Changes

  • #3741: Removed patching ofdistutils._msvccompiler.gen_lib_optionsfor compatibility with Numpy < 1.11.2 – by@mgorny

  • #3790: Bump vendored version ofpackaging to 23.0(pyparsing is no longer required and was removed).As a consequence, users will experience a more strict parsing of requirements.Specifications that don’t comply withPEP 440 andPEP 508 will resultin build errors.

v66.1.1

20 Jan 2023

Misc

  • #3782: Fixed problem withfile directive intool.setuptools.dynamic(pyproject.toml) when value is a simple string instead of list.

v66.1.0

20 Jan 2023

Changes

  • #3685: Fix improper usage of deprecated/removedpkgutil APIs in Python 3.12+.

  • #3779: Files referenced byfile: insetup.cfg and byproject.readme.file,project.license.file ortool.setuptools.dynamic.*.file inpyproject.toml are now automatically included in the generated sdists.

Misc

  • #3776: Added note about using the--pep-517 flag withpip to workaroundInvalidVersion errors for packages that are already installed in the system.

v66.0.0

15 Jan 2023

Breaking Changes

  • #2497: Support forPEP 440 non-conforming versions has been removed. Environments containing packages with non-conforming versions may fail or the packages may not be recognized.

Changes

  • #3769: Replace ‘appdirs’ with ‘platformdirs’.

v65.7.0

11 Jan 2023

Changes

  • #3594: Addedhtmlcov to FlatLayoutModuleFinder.DEFAULT_EXCLUDE – by@demianbrecht

  • #3667: Added a human-readable error description when.egg-info directory is not writeable – by@droodev

Misc

  • #3713: Fixed incompletegetattr statement that caused problems when accessingundefined attribute.

v65.6.3

23 Nov 2022

Misc

  • #3709: Fix condition to patchdistutils.dist.log to only apply when usingdistutils from the stdlib.

v65.6.2

23 Nov 2022

No significant changes.

v65.6.1

23 Nov 2022

Documentation changes

  • #3689: Documented thatdistutils.cfg might be ignored unlessSETUPTOOLS_USE_DISTUTILS=stdlib.

Misc

  • #3678: Improve clib builds reproducibility by sorting sources – by@danigm

  • #3684: Improved exception/traceback when invalid entry-points are specified.

  • #3690: Fixed logging errors: ‘underlying buffer has been detached’ (issue#1631).

  • #3693: Mergepypa/distutils@3e9d47e with compatibility fix for distutils.log.Log.

  • #3695,#3697,#3698,#3699: Changed minor text details (spelling, spaces …)

  • #3696: Removed unnecessarycoding:utf-8 annotations

  • #3704: Fixed temporary build directories interference with auto-discovery.

v65.6.0

18 Nov 2022

Changes

v65.5.1

04 Nov 2022

Misc

v65.5.0

14 Oct 2022

Changes

  • #3624: Fixed editable install for multi-module/no-packagesrc-layout projects.

  • #3626: Minor refactorings to support distutils using stdlib logging module.

Documentation changes

  • #3419: Updated the example version numbers to be compliant withPEP-440 on the “Specifying Your Project’s Version” page of the user guide.

Misc

  • #3569: Improved information about conflicting entries in the current working directoryand editable install (in documentation and as an informational warning).

  • #3576: Updated version ofvalidate_pyproject.

v65.4.1

29 Sep 2022

Misc

v65.4.0

24 Sep 2022

Changes

v65.3.0

24 Aug 2022

Changes

  • #3547: StopConfigDiscovery.analyse_name from splatting theDistribution.name attribute – by@jeamland

Documentation changes

Misc

  • #3561: Fixed accidental name matching in editable hooks.

v65.2.0

21 Aug 2022

Changes

v65.1.1

21 Aug 2022

Misc

  • #3551: Avoided circular imports in meta path finder for editable installs when amissing module has the same name as its parent.

v65.1.0

18 Aug 2022

Changes

  • #3536: Remove monkeypatching of msvc9compiler.

Documentation changes

  • #3538: Corrected documentation on how to use thelegacy-editable mode.

v65.0.2

16 Aug 2022

Misc

v65.0.1

15 Aug 2022

Documentation changes

Misc

  • #3526: Fixed backward compatibility of editable installs and custombuild_extcommands inheriting directly fromdistutils.

  • #3528: Fixedbuid_meta.prepare_metadata_for_build_wheel whengivenmetadata_directory is".".

v65.0.0

14 Aug 2022

Breaking Changes

  • #3505: Removed ‘msvccompiler’ and ‘msvc9compiler’ modules from distutils.

  • #3521: Remove bdist_msi and bdist_wininst commands, which have been deprecated since Python 3.9. Use older Setuptools for these behaviors if needed.

Documentation changes

  • #3519: Changed the note inkeywords documentation regarding editable installationsto specify whichsetuptools version require a minimalsetup.py file or not.

v64.0.3

12 Aug 2022

Misc

  • #3515: Fixed “inline” file copying for editable installations andoptional extensions.

  • #3517: Fixededitable_wheel to ensure other commands are finalized before usingthem. This should prevent errors with plugins trying to use different commandsor reinitializing them.

  • #3517: Augmented filter to prevent transient/temporary source files from beingconsideredpackage_data ordata_files.

v64.0.2

12 Aug 2022

Misc

  • #3506: Suppress errors in custombuild_py implementations when running editableinstalls in favor of a warning indicating what is the most appropriatemigration path.This is atransitional measure. Errors might be raised in future versions ofsetuptools.

  • #3512: Added capability of handling namespace packages createdaccidentally/purposefully via discovery configuration during editable installs.This should emulate the behaviour of a non-editable installation.

v64.0.1

11 Aug 2022

Misc

  • #3497: Fixededitable_wheel for legacy namespaces.

  • #3502: Fixed issue with editable install and single module distributions.

  • #3503: Added filter to ignore external.egg-info files in manifest.

    Some plugins might rely on the fact that the.egg-info directory isproduced inside the project dir, which may not be the case in editable installs(the.egg-info directory is produced inside the metadata directory given bythe build frontend viaPEP 660 hooks).

v64.0.0

11 Aug 2022

Deprecations

  • #3380: Passing some types of parameters via--global-option to setuptoolsPEP 517/PEP 660 backendis now considered deprecated. The user can pass the same arbitrary parametervia--build-option (--global-option is now reserved for flags like--verbose or--quiet).

    Both--build-option and--global-option are supported as atransitional effort (a.k.a. “escape hatch”).In the future a proper list of allowedconfig_settings may be created.

Breaking Changes

  • #3265: Added implementation foreditable install hooks (PEP 660).

    By default the users will experience alenient behavior which prioritisesthe ability of the users of changing the distributed packages (e.g. adding newfiles or removing old ones).But they can also opt into astrict mode, which will try to replicate as muchas possible the behavior of the package as if it would be normally installed byend users. Thestrict editable installation is not able to detect if filesare added or removed from the project (a new installation is required).

    This implementation might also affect plugins and customizations that assumecertainbuild subcommands don’t run during editable installs or that theyalways copy files to the temporary build directory.

    Important

    Theeditable aspect of theeditable install supported this implementationis restricted to the Python modules contained in the distributed package.Changes in binary extensions (e.g. C/C++), entry-point definitions,dependencies, metadata, datafiles, etc may require a new installation.

Changes

  • #3380: Improved the handling of theconfig_settings parameter in bothPEP 517 andPEP 660 interfaces:

    • It is possible now to pass both--global-option and--build-option.As discussed in#1928, arbitrary arguments passed via--global-optionshould be placed before the name of the setuptools’ internal command, while--build-option should come after.

    • Users can passeditable-mode=strict to select a strict behaviour for theeditable installation.

  • #3392: Exposedget_output_mapping() frombuild_py andbuild_extsubcommands. This interface is reserved for the use ofsetuptoolsExtensions and third part packages are explicitly disallowed to calling it.However, any implementation overwritingbuild_py orbuild_ext arerequired to honour this interface.

  • #3412: Added ability of collecting source files from custom build sub-commands tosdist. This allows plugins and customization scripts to automaticallyadd required source files in the source distribution.

  • #3414: Users cantemporarily specify an environment variableSETUPTOOLS_ENABLE_FEATURES=legacy-editable as a escape hatch for thePEP 660 behavior. This setting istransitional and may be removed in thefuture.

  • #3484: Addedtransientcompat mode to editable installs.This more will be temporarily available (to facilitate the transition period)for those that want to emulate the behavior of thedevelop command(in terms of what is added tosys.path).This mode is provided “as is”, with limited support, and will be removed infuture versions ofsetuptools.

Documentation changes

v63.4.3

10 Aug 2022

Misc

v63.4.2

06 Aug 2022

Misc

  • #3453: Bump vendored version ofpyparsing to 3.0.9.

  • #3481: Add warning for potentialinstall_requires andextras_requiremisconfiguration insetup.cfg

  • #3487: Modifiedpyproject.toml validation exception handling tomake relevant debugging information easier to spot.

v63.4.1

03 Aug 2022

Misc

v63.4.0

02 Aug 2022

Changes

  • #2971:upload_docs command is deprecated once again.

Documentation changes

  • #3443: Installedsphinx-hoverxref extension to show tooltips on internal an external references.– by@humitos

  • #3444: Installedsphinx-notfound-page extension to generate nice 404 pages.– by@humitos

Misc

v63.3.0

31 Jul 2022

Changes

v63.2.0

13 Jul 2022

Changes

  • #3395: Included a performance optimization:setuptools.build_meta no longer triestocompile() the setup script code beforeexec()-ing it.

Misc

v63.1.0

03 Jul 2022

Changes

v63.0.0

04 Jul 2022

Breaking Changes

  • #3421: Drop setuptools’ support for installing an entrypoint extra requirements at load time:- the functionality has been broken since v60.8.0.- the mechanism to do so is deprecated (fetch_build_eggs).- that use case (e.g. a custom command class entrypoint) is covered by making sure the necessary build requirements are declared.

Documentation changes

  • #3305: Updated the example pyproject.toml – by@jacalata

  • #3394: This updates the documentation for thefile_finders hook so thatthe logging recommendation aligns with the suggestion to not usedistutils directly.

  • #3397: Fix reference forkeywords to point to the Core Metadata Specificationinstead ofPEP 314 (the live standard is kept always up-to-date andconsolidates several PEPs together in a single document).

  • #3402: Reordered the User Guide’s Table of Contents – by@codeandfire

v62.6.0

19 Jun 2022

Changes

  • #3253: Enabled usingfile: for requirements in setup.cfg – by@akx(this feature is currently considered to be inbeta stage).

  • #3255: Enabled usingfile: for dependencies and optional-dependencies in pyproject.toml – by@akx(this feature is currently considered to be inbeta stage).

  • #3391: Updatedattr: to also extract simple constants with type annotations – by@karlotness

v62.5.0

17 Jun 2022

Changes

  • #3347: Changed warnings and documentation notes aboutexperimental aspect ofpyproject.toml configuration:now[project] is a fully supported configuration interface, but the[tool.setuptools] tableand sub-tables are still considered to be inbeta stage.

  • #3383: In _distutils_hack, suppress/undo the use of local distutils when select tests are imported in CPython.

Documentation changes

  • #3368: Added documentation page about extension modules – by@mkoeppe

  • #3371: Moved documentation from/userguide/commands to/depracted/commands.This change was motived by the fact that runningpythonsetup.py directly isconsidered a deprecated practice.

  • #3372: Consolidated sections aboutsdist contents andMANIFEST.in into a single page.

    Added a simpleMANIFEST.in example.

  • #3373: Moved remarks about usingCython to the newly created page forextension modules.

  • #3374: Added clarification that usingpythonsetup.pyegg_info commands tomanage project versions is only supported in atransitional basis, andthat eventuallyegg_info will be deprecated.

    Reorganized sections with tips for managing versions.

  • #3378: UpdatedQuickstart docs to make it easier to follow for beginners.

Misc

  • #3385: Modules used to parse and evaluate configuration frompyproject.toml files areintended for internal use only and that not part of the public API.

v62.4.0

13 Jun 2022

Changes

Documentation changes

  • #3355: Changes to the User Guide’s Entry Points page – by@codeandfire

  • #3361: Further minor corrections to the Entry Points page – by@codeandfire

  • #3363: Rework some documentation pages to de-emphasizedistutils and the historyof packaging in the Python ecosystem. The focus of these changes is to make thedocumentation easier to read for new users.

  • #3364: Update documentation about dependency management, removing mention tothe deprecateddependency_links and adding some small improvements.

  • #3367: Extracted text about automatic resource extraction and the zip-safe flagfromuserguide/miscellaneous todeprecated/resource_extraction anddeprecated/zip_safe.

    Extracted text about additional metadata files fromuserguide/miscellaneous into the existinguserguide/extensiondocument.

    Updateduserguide/extension to better reflect the status of thesetuptools project.

    Removeduserguide/functionalities_rewrite (a virtually empty part of thedocs).

v62.3.4

11 Jun 2022

Documentation changes

  • #3349: Fixed two small issues preventing docs from building locally – by@codeandfire

  • #3350: Added note explainingpackage_data glob pattern matching for dotfiles – by@comabrewer

  • #3358: Clarify the role of thepackage_dir configuration.

Misc

  • #3354: Improve clarity in warning about unlisted namespace packages.

v62.3.3

07 Jun 2022

Documentation changes

  • #3331: Replaced single backticks with double ones inCHANGES.rst – by@codeandfire

  • #3332: Fixed grammar/typos, modified example directory trees for src-layout and flat-layout – by@codeandfire

  • #3335: Changes to code snippets and other examples in the Data Files page of the User Guide – by@codeandfire

Misc

  • #3336: Modifiedtest_setup_install_includes_dependencies to work with customPYTHONPATH –- by@hroncok

v62.3.2

18 May 2022

Misc

  • #3328: Include a first line summary to some of the existing multi-line warnings.

v62.3.1

17 May 2022

Misc

  • #3320: Fixed typo which causesnamespace_packages to raise an error instead ofwarning.

v62.3.0

16 May 2022

Deprecations

  • #3262: Formally added deprecation messages fornamespace_packages.The methodology that usespkg_resources andnamespace_packages forcreating namespaces was already discouraged by thesetuptools docs and thePython Packaging User Guide,therefore this change just make the deprecation more official.Users can consider migrating to native/implicit namespaces (as introduced inPEP 420).

  • #3308: Relying oninclude_package_data to ensure sub-packages are automaticallyadded to the build wheel distribution (as “data”) is now considered adeprecated practice.

    This behaviour was controversial and caused inconsistencies (#3260).

    Instead, projects are encouraged to properly configurepackages or usediscovery tools. General information can be found inPackage Discovery and Namespace Packages.

Changes

  • #1806: Allowed recursive globs (**) inpackage_data. – by@nullableVoidPtr

  • #3206: Fixed behaviour when bothinstall_requires (insetup.py) anddependencies (inpyproject.toml) are specified.The configuration inpyproject.toml will take precedence oversetup.py(in accordance withPEP 621). A warning was added to inform users.

Documentation changes

  • #3307: Added introduction to references/keywords.

    Added deprecation tags to test kwargs.

    Moved userguide/keywords to deprecated section.

    Clarified in deprecated doc what keywords came from distutils and which were added or changed by setuptools.

Misc

  • #3274: Updated version of vendoredpyparsing to 3.0.8 to avoid problems withupcoming deprecation in Python 3.11.

  • #3292: Added warning about incompatibility with old versions ofimportlib-metadata.

v62.2.0

10 May 2022

Changes

Misc

  • #3282: Added CI cache forsetup.cfg examples used when testingsetuptools.config.

v62.1.0

10 Apr 2022

Changes

Misc

  • #3249: Simplifiedpackage_dir obtained via auto-discovery.

v62.0.0

04 Apr 2022

Breaking Changes

  • #3151: Madesetup.pydevelop--user install to the user site packages directory even if it is disabled in the current interpreter.

Changes

  • #3153: When resolving requirements use both canonical and normalized names – by@ldaniluk

  • #3167: Honor unix file mode in ZipFile when installing wheel viainstall_as_egg – by@delijati

Misc

  • #3088: Fixed duplicated tag with thedist-info command.

  • #3247: Fixed problem preventingreadme specified as dynamic inpyproject.tomlfrom being dynamically specified insetup.py.

v61.3.1

01 Apr 2022

Misc

  • #3233: Included missing test filesetupcfg_examples.txt insdist.

  • #3233: Added script that allows developers to downloadsetupcfg_examples.txt prior torunning tests. By caching these files it should be possible to run the test suiteoffline.

v61.3.0

31 Mar 2022

Changes

  • #3229: Disabled automatic download oftrove-classifiers to facilitate reproducibility.

Misc

  • #3229: Updatedpyproject.toml validation viavalidate-pyproject v0.7.1.

  • #3229: New internal tool made available for updating the code responsible forthe validation ofpyproject.toml.This tool can be executed viatox-egenerate-validation-code.

v61.2.0

27 Mar 2022

Changes

  • #3215: Ignored a subgroup of invalidpyproject.toml files that use the[project]table to specify onlyrequires-python (transitional).

    Warning

    Please note that future releases of setuptools will halt the build processif apyproject.toml file that does not matchthe PyPA Specification is given.

  • #3215: Updatedpyproject.toml validation, as generated byvalidate-pyproject==0.6.1.

  • #3218: Prevented builds from erroring if the project specifies metadata viapyproject.toml, but uses other files (e.g.setup.py) to complement it,without settingdynamic properly.

    Important

    This is atransitional behaviour.Future releases ofsetuptools may simply ignore externally set metadatanot backed bydynamic or even halt the build with an error.

  • #3224: Merge changes frompypa/distutils@e1d5c9b1f6

Documentation changes

Misc

  • #3223: Fixed missing requirements with environment markers whenoptional-dependencies is set inpyproject.toml.

v61.1.1

26 Mar 2022

Misc

  • #3212: Fixed missing dependencies when runningsetup.pyinstall.Note that callingsetup.pyinstall directly is still deprecated andwill be removed in future versions ofsetuptools.Please check the release notes forv58.3.0.

v61.1.0

25 Mar 2022

Deprecations

  • #3206: Changedsetuptools.convert_path to an internal function that is not exposedas part of setuptools API.Future releases ofsetuptools are likely to remove this function.

Changes

  • #3202: Changed behaviour of auto-discovery to not explicitly expandpackage_dirfor flat-layouts and to not use relative paths starting with./.

  • #3203: Preventedpyproject.toml parsing from overwritingdist.include_package_data explicitly set insetup.py with defaultvalue.

  • #3208: Added a warning for non existing files listed with thefile directive insetup.cfg andpyproject.toml.

  • #3208: Added a default value for dynamicclassifiers inpyproject.toml whenfiles are missing and errors being ignored.

  • #3211: Disabled auto-discovery when distribution class has aconfigurationattribute (e.g. when thesetup.py script containssetup(...,configuration=...)). This is done to ensure extension-only packages createdwithnumpy.distutils.misc_util.Configuration are not broken by the safeguardbehaviour to avoid accidental multiple top-level packages in a flat-layout.

    Note

    Users that don’t setpackages,py_modules, orconfiguration arestill likely to observe the auto-discovery behavior, which may halt thebuild if the project contains multiple directories and/or multiple Pythonfiles directly under the project root.

    To disable auto-discovery please explicitly set eitherpackages orpy_modules. Alternatively you can also configureCustom discovery.

v61.0.0

24 Mar 2022

Deprecations

  • #3068: Deprecatedsetuptools.config.read_configuration,setuptools.config.parse_configuration and other functions or classesfromsetuptools.config.

    Users that still need to parse and process configuration fromsetup.cfg canimport a direct replacement fromsetuptools.config.setupcfg, however thismodule is transitional and might be removed in the future(thesetup.cfg configuration format itself is likely to be deprecated in the future).

Breaking Changes

  • #2894: If you purposefully want to create an“empty distribution”, please be awarethat some Python files (or general folders) might be automatically detected andincluded.

    Projects that currently don’t specify bothpackages andpy_modules in theirconfiguration and contain extra folders or Python files (not meant for distribution),might see these files being included in the wheel archive or even experiencethe build to fail.

    You can check details about the automatic discovery (and how to configure adifferent behaviour) inPackage Discovery and Namespace Packages.

  • #3067: If the filepyproject.toml exists and it includes projectmetadata/config (via[project] table or[tool.setuptools]),a series of new behaviors that are not backward compatible may take place:

    • The default value ofinclude_package_data will be considered to beTrue.

    • Setuptools will attempt to validate thepyproject.toml file accordingtoPEP 621 specification.

    • The values specified inpyproject.toml will take precedence over thosespecified insetup.cfg orsetup.py.

Changes

  • #2887:[EXPERIMENTAL] Added automatic discovery forpy_modules andpackages– by@abravalheri.

    Setuptools will try to find these values assuming that the package uses eitherthesrc-layout (asrc directory containing all the packages or modules),theflat-layout (package directories directly under the project root),or thesingle-module approach (an isolated Python file, directly underthe project root).

    The automatic discovery will also respect layouts that are explicitlyconfigured using thepackage_dir option.

    For backward-compatibility, this behavior will be observedonly if bothpy_modulesandpackagesare not set.(Note: specifyingext_modules might also prevent auto-discover fromtaking place)

    If setuptools detects modules or packages that are not supposed to be in thedistribution, please manually setpy_modules andpackages in yoursetup.cfg orsetup.py file.If you are using aflat-layout, you can also consider switching tosrc-layout.

  • #2887:[EXPERIMENTAL] Added automatic configuration for thename metadata– by@abravalheri.

    Setuptools will adopt the name of the top-level package (or module in the caseof single-module distributions),only whennameis not explicitlyprovided.

    Please note that it is not possible to automatically derive a single name whenthe distribution consists of multiple top-level packages or modules.

  • #3066: Added vendored dependencies fortomli,validate-pyproject.

    These dependencies are used to readpyproject.toml files and validate them.

  • #3067:[EXPERIMENTAL] When usingpyproject.toml metadata,the default value ofinclude_package_data is changed toTrue.

  • #3068:[EXPERIMENTAL] Add support forpyproject.toml configuration(as introduced byPEP 621). Configuration parameters not covered bystandards are handled in the[tool.setuptools] sub-table.

    In the future, existingsetup.cfg configurationmay be automatically converted into thepyproject.toml equivalent before taking effect(as proposed in#1688). Meanwhile users can use automated tools likeini2toml to help in the transition.

    Please note that the legacy backend is not guaranteed to work withpyproject.toml configuration.

    – by@abravalheri

  • #3125: Implicit namespaces (as introduced inPEP 420) are now considered by defaultduringpackage discovery, whensetuptools configuration and project metadata are added to thepyproject.toml file.

    To disable this behaviour, usenamespaces=False when explicitly settingthe[tool.setuptools.packages.find] section inpyproject.toml.

    This change is backwards compatible and does not affect the behaviour ofconfiguration done insetup.cfg orsetup.py.

  • #3152:[EXPERIMENTAL] Added support forattr: andcmdclass configurationsinsetup.cfg andpyproject.toml whenpackage_dir is implicitlyfound via auto-discovery.

  • #3178: Postponed importingctypes when hiding files on Windows.This helps to prevent errors in systems that might not havelibffi installed.

  • #3179: Merge withpypa/distutils@267dbd25ac

Documentation changes

  • #3172: Added initial documentation about configuringsetuptools viapyproject.toml(using standard project metadata).

Misc

  • #3065: Refactoredsetuptools.config by separating configuration parsing (specificto the configuration file format, e.g.setup.cfg) and post-processing(which includes directives such asfile: that can be used across differentconfiguration formats).

v60.10.0

16 Mar 2022

Changes

  • #2971: Deprecated upload_docs command, to be removed in the future.

  • #3137: Use samefile from stdlib, supported on Windows since Python 3.2.

  • #3170: Adopt nspektr (vendored) to implement Distribution._install_dependencies.

Documentation changes

  • #3144: Added documentation on using console_scripts from setup.py, which was previously only shown in setup.cfg – by@xhlulu

  • #3148: Added clarifications aboutMANIFEST.in, that include links to PyPUG docsand more prominent mentions to using a revision control system plugin as analternative.

  • #3148: Removed mention topkg_resources as the recommended way of accessing datafiles, in favour of importlib.resources.Additionally more emphasis was put on the fact thatpackage data files resideinside thepackage directory (and therefore should beread-only).

Misc

  • #3120: Added workaround for intermittent failures of backend tests on PyPy.These tests now are marked withXFAIL, instead of erroringout directly.

  • #3124: Improved configuration forrst-linker (extension used to build thechangelog).

  • #3133: Enhanced isolation of tests using virtual environments - PYTHONPATH is not leaking to spawned subprocesses – by@befeleme

  • #3147: Added options to provide a pre-builtsetuptools wheel or sdist for beingused during tests with virtual environments.Paths for these pre-built distribution files can now be set via the environmentvariables:PRE_BUILT_SETUPTOOLS_SDIST andPRE_BUILT_SETUPTOOLS_WHEEL.

v60.9.3

17 Feb 2022

Misc

  • #3093: Repaired automated release process.

v60.9.2

15 Feb 2022

Misc

  • #3035: When loading distutils from the vendored copy, rewrite__name__ to ensure consistent importing from inside and out.

v60.9.1

14 Feb 2022

Misc

  • #3102: Prevent vendored importlib_metadata from loading distributions from older importlib_metadata.

  • #3103: Fixed issue where string-based entry points would be omitted.

  • #3107: Bump importlib_metadata to 4.11.1 addressing issue with parsing requirements in egg-info as found in PyPy.

v60.9.0

13 Feb 2022

Changes

  • #2876: In the build backend, allow single config settings to be supplied.

  • #2993: Removed workaround in distutils hack for get-pip now thatpypa/get-pip#137 is closed.

  • #3085: Setuptools no longer relies onpkg_resources for entry point handling.

  • #3098: Bump vendored packaging to 21.3.

  • Removed bootstrap script.

Warning

Users trying to install the unmaintainedpathlib backportfrom PyPI/sdist/source code may find problems when usingsetuptools>=60.9.0.This happens because during the installation, the unmaintainedimplementation ofpathlib is loaded and may cause compatibility problems(it does not expose the same public API defined in the Python standard library).

Whenever possible users should avoid declaringpathlib as a dependency.An alternative is to pre-build a wheel forpathlib using a separatedvirtual environment with an older version of setuptools and install thelibrary directly from the pre-built wheel.

v60.8.2

08 Feb 2022

Misc

  • #3091: Makeconcurrent.futures import lazy in vendoredmore_itertoolspackage to a avoid importing threading as a side effect (which causedgevent/gevent#1865).– by@maciejp-ro

v60.8.1

06 Feb 2022

Misc

  • #3084: When vendoring jaraco packages, ensure the namespace package is converted to a simple package to support zip importer.

v60.8.0

05 Feb 2022

Changes

  • #3085: Setuptools now vendors importlib_resources and importlib_metadata and jaraco.text. Setuptools no longer relies on pkg_resources for ensure_directory nor parse_requirements.

v60.7.1

02 Feb 2022

Misc

  • #3072: Remove lorem_ipsum from jaraco.text when vendored.

v60.7.0

01 Feb 2022

Changes

  • #3061: Vendored jaraco.text and use line processing from that library in pkg_resources.

Misc

  • #3070: Avoid AttributeError in easy_install.create_home_path when sysconfig.get_config_vars values are not strings.

v60.6.0

30 Jan 2022

Changes

Documentation changes

  • #2897: Added documentation about wrappingsetuptools.build_meta in a in-treecustom backend. This is aPEP 517-compliant way of dynamically specifyingbuild dependencies (e.g. when platform, OS and other markers are not enough).– by@abravalheri

  • #3034: Replaced occurrences of the defunct distutils-sig mailing list with pointersto GitHub Discussions.– by@ashemedai

  • #3056: The documentation has stopped suggesting to addwheel toPEP 517 requirements – by@webknjaz

Misc

v60.5.4

16 Jan 2022

Misc

  • #3009: Remove filtering of distutils warnings.

  • #3031: Suppress distutils replacement when building or testing CPython.

v60.5.3

13 Jan 2022

Misc

  • #3026: Honor sysconfig variables in easy_install.

v60.5.2

11 Jan 2022

Misc

  • #2993: In _distutils_hack, for get-pip, simulate existence of setuptools.

v60.5.1

10 Jan 2022

Misc

  • #2918: Correct support for Python 3 native loaders.

v60.5.0

08 Jan 2022

Changes

  • #2990: Set the.origin attribute of thedistutils module to the module’s__file__.

v60.4.0

08 Jan 2022

Changes

  • #2839: Removedrequires sorting when installing wheels as an egg dir.

  • #2953: Fixed a bug that easy install incorrectly parsed Python 3.10 version string.

  • #3006: Fixed startup performance issue of Python interpreter due to imports ofcostly modules in_distutils_hack – by@tiran

Documentation changes

  • #2674: Added link to additional resources on packaging in Quickstart guide

  • #3008: “In-tree” Sphinx extension for “favicons” replaced withsphinx-favicon.

  • #3008: SVG images (logo, banners, …) optimised with the help of thescourpackage.

Misc

  • #2862: Added integration tests that focus on building and installing some packages inthe Python ecosystem viapip – by@abravalheri

  • #2952: Modified “vendoring” logic to keep license files.

  • #2968: Improved isolation for some tests that where inadvertently using the projectroot for builds, and therefore creating directories (e.g.build,dist,*.egg-info) that could interfere with the outcome of other tests– by@abravalheri.

  • #2968: Introduced new test fixturesvenv,venv_without_setuptools,bare_venv that rely on thejaraco.envs package.These new test fixtures were also used to remove the (currently problematic)dependency on thepytest_virtualenv plugin.

  • #2968: Removedtmp_src test fixture. Previously this fixture was copying all thefiles and folders under the project root, including the.git directory,which is error prone and increases testing time.

    Sincetmp_src was used to populate virtual environments (installing theversion ofsetuptools under test via the source tree), it was replaced bythe newsetuptools_sdist andsetuptools_wheel fixtures (that are buildonly once per session testing and can be shared between all the workers forread-only usage).

v60.3.1

06 Jan 2022

Misc

  • #3002: Suppress AttributeError when detecting get-pip.

v60.3.0

05 Jan 2022

Changes

  • #2993: In _distutils_hack, bypass the distutils exception for pip when get-pip is being invoked, because it imports setuptools.

Misc

v60.2.0

29 Dec 2021

Changes

Misc

  • #2962: Avoid attempting to use local distutils when the presiding version of Setuptools on the path doesn’t have one.

  • #2983: Restore ‘add_shim’ as the way to invoke the hook. Avoids compatibility issues between different versions of Setuptools with the distutils local implementation.

v60.1.1

28 Dec 2021

Misc

  • #2980: Bypass distutils loader when setuptools module is no longer available on sys.path.

v60.1.0

23 Dec 2021

Changes

v60.0.5

23 Dec 2021

Misc

  • #2960: Install schemes fall back to default scheme for headers.

v60.0.4

22 Dec 2021

Misc

v60.0.3

20 Dec 2021

Misc

  • #2940: Avoid KeyError in distutils hack when pip is imported during ensurepip.

v60.0.2

20 Dec 2021

Misc

  • #2938: Select ‘posix_user’ for the scheme unless falling back to stdlib, then use ‘unix_user’.

v60.0.1

20 Dec 2021

Misc

  • #2944: Add support for extended install schemes in easy_install.

v60.0.0

19 Dec 2021

Breaking Changes

  • #2896: Setuptools once again makes its local copy of distutils the default. To override, set SETUPTOOLS_USE_DISTUTILS=stdlib.

v59.8.0

19 Dec 2021

Changes

v59.7.0

17 Dec 2021

Changes

  • #2930: Require Python 3.7

v59.6.0

12 Dec 2021

Changes

v59.5.0

05 Dec 2021

Changes

v59.4.0

28 Nov 2021

Changes

  • #2893: Restore deprecated support for newlines in the Summary field.

v59.3.0

26 Nov 2021

Changes

Misc

  • #2906: In ensure_local_distutils, re-use DistutilsMetaFinder to load the module. Avoids race conditions when _distutils_system_mod is employed.

v59.2.0

18 Nov 2021

Changes

  • #2875: Introduce changes frompypa/distutils@514e9d0, including support for overrides from Debian and pkgsrc, unlocking the possibility of making SETUPTOOLS_USE_DISTUTILS=local the default again.

v59.1.1

15 Nov 2021

Misc

  • #2885: Fixed errors when encountering LegacyVersions.

v59.1.0

14 Nov 2021

Changes

  • #2497: Update packaging to 21.2.

  • #2877: Back out deprecation of setup_requires and replace instead by a deprecation of setuptools.installer and fetch_build_egg. Now setup_requires is still supported when installed as part of aPEP 517 build, but is deprecated when an unsatisfied requirement is encountered.

  • #2879: Bump packaging to 21.2.

Documentation changes

  • #2867: PNG/ICO images replaced with SVG in the docs.

  • #2867: Added support to SVG “favicons” via “in-tree” Sphinx extension.

v59.0.1

14 Nov 2021

Misc

  • #2880: Removed URL requirement forpytest-virtualenv insetup.cfg.PyPI rejects packages with dependencies external to itself.Instead the test dependency was overwritten viatox.ini

v59.0.0

12 Nov 2021

Deprecations

  • #2856: Support for custom commands that inherit directly fromdistutils isdeprecated. Users should extend classes provided by setuptools instead.

Breaking Changes

Changes

Documentation changes

  • #2227: Added sphinx theme customisations to display the new logo in the sidebar anduse its colours as “accent” in the documentation – by@abravalheri

  • #2227: Added new setuptools logo, including editable files and artwork documentation– by@abravalheri

  • #2698: Added mentions tosetuptools.errors as a way of handling custom commanderrors.

  • #2698: Added instructions to migrate fromdistutils.commands anddistutils.errors in the porting guide.

  • #2871: Added a note to the docs that it is possible to installsetup.py-less projects in editable mode withpip v21.1+, only havingsetup.cfg andpyproject.toml inproject root – by@webknjaz

v58.5.3

04 Nov 2021

Misc

  • #2849: Add fallback for custombuild_py commands inheriting directly fromdistutils, while still handlinginclude_package_data=True forsdist.

v58.5.2

03 Nov 2021

Misc

  • #2847: Suppress ‘setup.py install’ warning under bdist_wheel.

v58.5.1

03 Nov 2021

Misc

  • #2846: Move PkgResourcesDeprecationWarning above implicitly-called function so that it’s in the namespace when version warnings are generated in an environment that contains them.

v58.5.0

03 Nov 2021

Changes

  • #1461: Fix inconsistency withinclude_package_data andpackages_data in sdistby replacing the loop breaking mechanism between thesdist andegg_info commands – by@abravalheri

v58.4.0

31 Oct 2021

Changes

Documentation changes

  • #2832: Removed the deprecateddata_files option from the example in thedeclarative configuration docs – by@abravalheri

  • #2832: Change type ofdata_files option fromdict tosection indeclarative configuration docs (to match previous example) – by@abravalheri

v58.3.0

22 Oct 2021

Changes

  • #917:setup.pyinstall andeasy_install commands are now officially deprecated. Use other standards-based installers (like pip) and builders (like build). Workloads reliant on this behavior should pin to this major version of Setuptools. SeeWhy you shouldn’t invoke setup.py directly for more background.

  • #1988: Deprecated thebdist_rpm command. Binary packages should be built as wheels instead.– by@hugovk

  • #2785: Replaceconfigparser’sreadfp withread_file, deprecated since Python 3.2.– by@hugovk

  • #2823: Officially deprecated support forsetup_requires. Users are encouraged instead to migrate toPEP 518build-system.requires inpyproject.toml. Users reliant onsetup_requires should consider pinning to this major version to avoid disruption.

Misc

v58.2.0

01 Oct 2021

Changes

  • #2757: Add windows arm64 launchers for scripts generated by easy_install.

  • #2800: Added--owner and--group options to thesdist command,for specifying file ownership within the produced tarball (similarlyto the corresponding distutilssdist options).

Documentation changes

  • #2792: Document how the legacy and non-legacy versions are compared, and reference to thePEP 440 scheme.

v58.1.0

21 Sep 2021

Changes

v58.0.4

08 Sep 2021

Misc

  • #2773: Retain case in setup.cfg during sdist.

v58.0.3

07 Sep 2021

Misc

  • #2777: Build does not fail fast whenuse_2to3 is supplied but set to a false value.

v58.0.2

06 Sep 2021

Misc

  • #2769: Build now fails fast whenuse_2to3 is supplied.

v58.0.1

06 Sep 2021

Misc

  • #2765: In Distribution.finalize_options, suppress known removed entry points to avoid issues with older Setuptools.

v58.0.0

04 Sep 2021

Breaking Changes

  • #2086: Removed support for 2to3 during builds. Projects should port to a unified codebase or pin to an older version of Setuptools usingPEP 518 build-requires.

Documentation changes

  • #2746: add python_requires example

v57.5.0

04 Sep 2021

Changes

  • #2712: Added implicit globbing support for[options.data_files] values.

Documentation changes

  • #2737: fix various syntax and style errors in code snippets in docs

v57.4.0

18 Jul 2021

Changes

  • #2722: Added support forSETUPTOOLS_EXT_SUFFIX environment variable to override the suffix normally detected from thesysconfig module.

v57.3.0

18 Jul 2021

Changes

  • #2465: Documentation is now published using the Furo theme.

v57.2.0

14 Jul 2021

Changes

  • #2724: Added detection of Windows ARM64 build environments using theVSCMD_ARG_TGT_ARCH environment variable.

v57.1.0

04 Jul 2021

Changes

  • #2692: Globs are now sorted in ‘license_files’ restoring reproducibility by eliminating variance from disk order.

  • #2714: Update to distutils atpypa/distutils@e2627b7.

  • #2715: Removed reliance on deprecated ssl.match_hostname by removing the ssl support. Now any index operations rely on the native SSL implementation.

Documentation changes

  • #2604: Revamped the backward/cross tool compatibility section to removesome confusion.Add some examples and the version since whenentry_points aresupported in declarative configuration.Tried to make the reading flow a bit leaner, gather some informationthat were a bit dispersed.

v57.0.0

22 May 2021

Breaking Changes

  • #2645: License files excluded via theMANIFEST.in but matched by eitherthelicense_file (deprecated) orlicense_files options,will be nevertheless included in the source distribution. - by@cdce8p

Changes

  • #2628: Write long description in message payload of PKG-INFO file. - by@cdce8p

  • #2645: AddedLicense-File (multiple) to the output package metadata.The field will contain the path of a license file, matched by thelicense_file (deprecated) andlicense_files options,relative to.dist-info. - by@cdce8p

  • #2678: Moved Setuptools’ own entry points into declarative config.

  • #2680: Vendoredmore_itertools for Setuptools.

  • #2681: Setuptools own setup.py no longer declares setup_requires, but instead expects wheel to be installed as declared by pyproject.toml.

Misc

  • #2650: Updated the docs build tooling to support the latest version ofTowncrier and show the previews of not-yet-released setuptools versionsin the changelog –@webknjaz

v56.2.0

09 May 2021

Changes

  • #2640: Fixed handling of multiline license strings. - by@cdce8p

  • #2641: Setuptools will now always try to use the latest supportedmetadata version forPKG-INFO. - by@cdce8p

v56.1.0

04 May 2021

Changes

  • #2653: Incorporated assorted changes from pypa/distutils.

  • #2657: Adopted docs from distutils.

  • #2663: Added Visual Studio Express 2017 support – by@dofuuz

Misc

  • #2644: FixedDeprecationWarning due tothreading.Thread.setDaemon in tests – by@tirkarthi

  • #2654: Made the changelog generator compatiblewith Towncrier >= 19.9 –@webknjaz

  • #2664: Relax the deprecation message in the distutils hack.

v56.0.0

08 Apr 2021

Deprecations

  • #2620: Thelicense_file option is now marked as deprecated.Uselicense_files instead. – by@cdce8p

Breaking Changes

  • #2620: If neitherlicense_file norlicense_files is specified, thesdistoption will now auto-include files that match the following patterns:LICEN[CS]E*,COPYING*,NOTICE*,AUTHORS*.This matches the behavior ofbdist_wheel. – by@cdce8p

Changes

  • #2620: Thelicense_file andlicense_files options now support glob patterns. – by@cdce8p

  • #2632: ImplementedVendorImporter.find_spec() method to get ridofImportWarning that Python 3.10 emits when only the old-styleimporter hooks are present – by@webknjaz

Documentation changes

  • #2620: Added documentation for thelicense_files option. – by@cdce8p

v55.0.0

30 Mar 2021

Breaking Changes

  • #2566: Remove the deprecatedbdist_wininst command. Binary packages should be built as wheels instead. – by@hroncok

v54.2.0

22 Mar 2021

Changes

  • #2608: Added informative error message toPEP 517 build failures owing toan emptysetup.py – by@layday

v54.1.3

22 Mar 2021

No significant changes.

v54.1.2

14 Mar 2021

Misc

v54.1.1

06 Mar 2021

Documentation changes

  • #2584: Addedsphinx-inline-tabs extension to allow for comparison ofsetup.py and its equivalentsetup.cfg – by@amy-lei

Misc

  • #2592: Made option keys in the[metadata] section ofsetup.cfg case-sensitive. Users havinguppercase option spellings will get a warning suggesting to make them to lowercase– by@melissa-kun-li

v54.1.0

05 Mar 2021

Changes

  • #1608: Removed the conversion of dashes to underscores in theextras_require anddata_files ofsetup.cfg to support the usage of dashes. Method will warn users when they use a dash-separated key which in the future will only allow an underscore. Note: the method performs the dash to underscore conversion to preserve compatibility, but future versions will no longer support it – by@melissa-kun-li

v54.0.0

28 Feb 2021

Breaking Changes

  • #2582: Simplified build-from-source story by providing bootstrapping metadata in a separate egg-info directory. Build requirements no longer include setuptools itself. Sdist once again includes the pyproject.toml. Project can no longer be installed from source on pip 19.x, but install from source is still supported on pip < 19 and pip >= 20 and install from wheel is still supported with pip >= 9.

Changes

  • #1932: HandledAttributeError by raisingDistutilsSetupError indist.check_specifier() when specifier is not a string – by@melissa-kun-li

  • #2570: Correctly parse cmdclass in setup.cfg.

Documentation changes

  • #2553: Added userguide example for markers in extras_require – by@pwoolvett

v53.1.0

25 Feb 2021

Changes

  • #1937: Preserved case-sensitivity of keys in setup.cfg so that entry point names are case-sensitive. Changed sensitivity of configparser. NOTE: Any projects relying on case-insensitivity will need to adapt to accept the original case as published. – by@melissa-kun-li

  • #2573: Fixed error in uploading a Sphinx doc with theupload_docs command. An html builder will be used.Note:upload_docs is deprecated for PyPi, but is supported for other sites – by@melissa-kun-li

v53.0.0

01 Feb 2021

Breaking Changes

  • #1527: Removed bootstrap script. Now Setuptools requires pip or another pep517-compliant builder such as ‘build’ to build. Now Setuptools can be installed from Github main branch.

v52.0.0

23 Jan 2021

Breaking Changes

  • #2537: Remove fallback support for fetch_build_eggs using easy_install. Now pip is required for setup_requires to succeed.

  • #2544: Removed ‘easy_install’ top-level model (runpy entry point) and ‘easy_install’ console script.

  • #2545: Removed support for eggsecutables.

Changes

  • #2459: Tests now run in parallel via pytest-xdist, completing in about half the time. Special thanks to@webknjaz for hard work implementing test isolation. To run without parallelization, disable the plugin withtox---pno:xdist.

v51.3.3

17 Jan 2021

Misc

  • #2539: Fix AttributeError in Description validation.

v51.3.2

17 Jan 2021

Misc

  • #1390: Validation of Description field now is more lenient, emitting a warning and mangling the value to be valid (replacing newlines with spaces).

v51.3.1

16 Jan 2021

Misc

  • #2536: Reverted tag deduplication handling.

v51.3.0

16 Jan 2021

Changes

  • #1390: Newlines in metadata description/Summary now trigger a ValueError.

  • #2481: Definecreate_module() andexec_module() methods inVendorImporterto get rid ofImportWarning – by@hroncok

  • #2489:pkg_resources behavior for zipimport now matches the regular behavior, and finds.egg-info (previously would only find.dist-info) – by@thatch

  • #2529: Fixed an issue where version tags may be added multiple times

v51.2.0

16 Jan 2021

Changes

  • #2493: Use importlib.import_module() rather than the deprecated loader.load_module()in pkg_resources namespace declaration – by@encukou

Documentation changes

  • #2525: Fix typo in the document page about entry point. – by@jtr109

Misc

  • #2534: Avoid hitting network during test_easy_install.

v51.1.2

08 Jan 2021

Misc

  • #2505: Disable inclusion of package data as it causes ‘tests’ to be included as data.

v51.1.1

28 Dec 2020

Misc

  • #2534: Avoid hitting network during test_virtualenv.test_test_command.

v51.1.0

21 Dec 2020

Changes

  • #2486: Project adopts jaraco/skeleton for shared package maintenance.

Misc

  • #2477: Restore inclusion of rst files in sdist.

  • #2484: Setuptools has replaced the master branch with the main branch.

  • #2485: Fixed failing test when pip 20.3+ is present.– by@yan12125

  • #2487: Fix tests with pytest 6.2– by@yan12125

v51.0.0

06 Dec 2020

Breaking Changes

  • #2435: Require Python 3.6 or later.

Documentation changes

Misc

  • #2471: Removed the tests that guarantee that the vendored dependencies can be built by distutils.

v50.3.2

17 Oct 2020

Documentation changes

  • #2394: Extended towncrier news template to include change note categories.This allows to see what types of changes a given version introduces– by@webknjaz

  • #2427: Started enforcing strict syntax and reference validationin the Sphinx docs – by@webknjaz

  • #2428: Removed redundant SphinxMakefile support – by@webknjaz

Misc

  • #2401: Enabled test results reporting in AppVeyor CI– by@webknjaz

  • #2420: Replace Python 3.9.0 beta with 3.9.0 final on GitHub Actions.

  • #2421: Python 3.9 Trove classifier got added to the dist metadata– by@webknjaz

v50.3.1

14 Oct 2020

Documentation changes

  • #2093: Finalized doc revamp.

  • #2097: doc: simplify index and group deprecated files

  • #2102: doc overhaul step 2: break main doc into multiple sections

  • #2111: doc overhaul step 3: update userguide

  • #2395: Added a:user: role to Sphinx config – by@webknjaz

  • #2395: Added an illustrative explanation about the change notes to fragments dir – by@webknjaz

Misc

  • #2379: Travis CI test suite now tests against PPC64.

  • #2413: Suppress EOF errors (and other exceptions) when importing lib2to3.

v50.3.0

05 Sep 2020

Changes

v50.2.0

04 Sep 2020

Changes

  • #2355: When pip is imported as part of a build, leave distutils patched.

  • #2380: There are some setuptools specific changes in thesetuptools.command.bdist_rpm module that are no longer needed, becausethey are part of thebdist_rpm module in distutils in Python3.5.0. Therefore, code was removed fromsetuptools.command.bdist_rpm.

v50.1.0

02 Sep 2020

Changes

  • #2350: Setuptools reverts using the included distutils by default. Platform maintainers and system integrators and others arestrongly encouraged to setSETUPTOOLS_USE_DISTUTILS=local to help identify and work through the reported issues with distutils adoption, mainly to file issues and pull requests with pypa/distutils such that distutils performs as needed across every supported environment.

v50.0.3

01 Sep 2020

Misc

v50.0.2

01 Sep 2020

Misc

  • #2352: In distutils hack, use absolute import rather than relative to avoidbpo-30876.

v50.0.1

01 Sep 2020

Misc

  • #2357: Restored Python 3.5 support in distutils.util for missingsubprocess._optim_args_from_interpreter_flags.

  • #2358: Restored AIX support on Python 3.8 and earlier.

  • #2361: Add Python 3.10 support to _distutils_hack. Get the ‘Loader’ abstract classfrom importlib.abc rather than importlib.util.abc (alias removed in Python3.10).

v50.0.0

20 Aug 2020

Breaking Changes

  • #2232: Once again, Setuptools overrides the stdlib distutils on import. For environments or invocations where this behavior is undesirable, users are provided with a temporary escape hatch. If the environment variableSETUPTOOLS_USE_DISTUTILS is set tostdlib, Setuptools will fall back to the legacy behavior. Use of this escape hatch is discouraged, but it is provided to ease the transition while proper fixes for edge cases can be addressed.

Changes

  • #2334: In MSVC module, refine text in error message.

v49.6.0

13 Aug 2020

Changes

  • #2129: In pkg_resources, no longer detect any pathname ending in .egg as a Python egg. Now the path must be an unpacked egg or a zip file.

v49.5.0

13 Aug 2020

Changes

  • #2306: When running as aPEP 517 backend, setuptools does not try to installsetup_requires itself. They are reported as build requirements for thefrontend to install.

v49.4.0

13 Aug 2020

Changes

  • #2310: Updated vendored packaging version to 20.4.

v49.3.2

12 Aug 2020

Documentation changes

  • #2300: Improve thesafe_version function documentation

Misc

  • #2297: Once again, in stubs prefer exec_module to the deprecated load_module.

v49.3.1

10 Aug 2020

Changes

  • #2316: Removed warning whendistutils is imported beforesetuptools whendistutils replacement is not enabled.

v49.3.0

09 Aug 2020

Changes

  • #2259: Setuptools now provides a .pth file (except for editable installs of setuptools) to the target environment to ensure that when enabled, the setuptools-provided distutils is preferred before setuptools has been imported (and even if setuptools is never imported). Honors the SETUPTOOLS_USE_DISTUTILS environment variable.

v49.2.1

02 Aug 2020

Misc

  • #2257: Fixed two flaws in distutils._msvccompiler.MSVCCompiler.spawn.

v49.2.0

12 Jul 2020

Changes

  • #2230: Now warn the user when setuptools is imported after distutils modules have been loaded (exempting PyPy for 3.6), directing the users of packages to import setuptools first.

v49.1.3

12 Jul 2020

Misc

  • #2212: (Distutils) Allow spawn to accept environment. Avoid monkey-patching global state.

  • #2249: Fix extension loading technique in stubs.

v49.1.2

11 Jul 2020

Changes

  • #2232: In preparation for re-enabling a local copy of distutils, Setuptools now honors an environment variable, SETUPTOOLS_USE_DISTUTILS. If set to ‘stdlib’ (current default), distutils will be used from the standard library. If set to ‘local’ (default in a imminent backward-incompatible release), the local copy of distutils will be used.

v49.1.1

10 Jul 2020

Misc

  • #2094: Removed pkg_resources.py2_warn module, which is no longer reachable.

v49.0.1

05 Jul 2020

Misc

  • #2228: Applied fix forpypa/distutils#3, restoring expectation that spawn will raise a DistutilsExecError when attempting to execute a missing file.

v49.1.0

03 Jul 2020

Changes

  • #2228: Disabled distutils adoption for now while emergent issues are addressed.

v49.0.0

03 Jul 2020

Breaking Changes

  • #2165: Setuptools no longer installs a site.py file during easy_install or develop installs. As a result, .eggs on PYTHONPATH will no longer take precedence over other packages on sys.path. If this issue affects your production environment, please reach out to the maintainers at#2165.

Changes

  • #2137: Removed (private) pkg_resources.RequirementParseError, now replaced by packaging.requirements.InvalidRequirement. Kept the name for compatibility, but users should catch InvalidRequirement instead.

  • #2180: Update vendored packaging in pkg_resources to 19.2.

Misc

  • #2199: Fix exception causes all over the codebase by usingraisenew_exceptionfromold_exception

v48.0.0

03 Jul 2020

Breaking Changes

  • #2143: Setuptools adopts distutils from the Python 3.9 standard library and no longer depends on distutils in the standard library. When importingsetuptools orsetuptools.distutils_patch, Setuptools will expose its bundled version as a top-leveldistutils package (and unload any previously-imported top-level distutils package), retaining the expectation thatdistutils’ objects are actually Setuptools objects.To avoid getting any legacy behavior from the standard library, projects are advised to always “import setuptools” prior to importing anything from distutils. This behavior happens by default when usingpipinstall orpep517.build. Workflows that rely onsetup.py(anything) will need to first ensure setuptools is imported. One way to achieve this behavior without modifying code is to invoke Python thus:python-c"importsetuptools;exec(open('setup.py').read())"(anything).

v47.3.2

03 Jul 2020

Misc

  • #2071: Replaced references to the deprecated imp package with references to importlib

v47.3.1

16 Jun 2020

Misc

  • #1973: Removedpkg_resources.py31compat.makedirs in favor of the stdlib. Useos.makedirs() instead.

  • #2198: Restore__requires__ directive in easy-install wrapper scripts.

v47.3.0

15 Jun 2020

Changes

  • #2197: Console script wrapper for editable installs now has a unified template and honors importlib_metadata if present for faster script execution on older Pythons.

Misc

  • #2195: Fix broken entry points generated by easy-install (pip editable installs).

v47.2.0

15 Jun 2020

Changes

  • #2194: Editable-installed entry points now load significantly faster on Python versions 3.8+.

  • #1471: Incidentally fixed by#2194 on Python 3.8 or when importlib_metadata is present.

v47.1.1

28 May 2020

Documentation changes

  • #2156: Update mailing list pointer in developer docs

Incorporate changes from v44.1.1:

  • #2158: Avoid loading working set duringDistribution.finalize_options prior to invoking_install_setup_requires, broken since v42.0.0.

v44.1.1

28 May 2020

Misc

  • #2158: Avoid loading working set duringDistribution.finalize_options prior to invoking_install_setup_requires, broken since v42.0.0.

v47.1.0

28 May 2020

Changes

  • #2070: In wheel-to-egg conversion, use simple pkg_resources-style namespace declaration for packages that declare namespace_packages.

v47.0.0

28 May 2020

Breaking Changes

  • #2094: Setuptools now actively crashes under Python 2. Python 3.5 or later is required. Users of Python 2 should usesetuptools<45.

Changes

  • #1700: Document all supported keywords by migrating the ones from distutils.

v46.4.0

16 May 2020

Changes

  • #1753:attr: now extracts variables through rudimentary examination of the AST,thereby supporting modules with third-party imports. If examining the ASTfails to find the variable,attr: falls back to the old behavior ofimporting the module. Works on Python 3 only.

v46.3.1

15 May 2020

No significant changes.

v46.3.0

13 May 2020

Changes

  • #2089: Package index functionality no longer attempts to remove an md5 fragment from the index URL. This functionality, added for distribute#163 is no longer relevant.

Misc

  • #2041: Preserve file modes during pkg files copying, but clear read only flag for target afterwards.

  • #2105: Filter2to3 deprecation warnings fromTestDevelop.test_2to3_user_mode.

v46.2.0

10 May 2020

Changes

  • #2040: Deprecated thebdist_wininst command. Binary packages should be built as wheels instead.

  • #2062: Change ‘Mac OS X’ to ‘macOS’ in code.

  • #2075: Stop recognizing files ending with.dist-info as distribution metadata.

  • #2086: Deprecate ‘use_2to3’ functionality. Packagers are encouraged to use single-source solutions or build tool chains to manage conversions outside of setuptools.

Documentation changes

  • #1698: Added documentation forbuild_meta (a bare minimum, not completed).

Misc

v46.1.3

25 Mar 2020

No significant changes.

v46.1.2

25 Mar 2020

Misc

  • #1458: Added template for reporting Python 2 incompatibilities.

v46.1.1

21 Mar 2020

No significant changes.

v46.1.0

21 Mar 2020

Changes

  • #308: Allow version number normalization to be bypassed by wrapping in a ‘setuptools.sic()’ call.

  • #1424: Prevent keeping files mode for package_data build. It may break a build if user’s package data has read only flag.

  • #1431: Ineasy_install.check_site_dir, ensure the installation directory exists.

  • #1563: Inpkg_resources preferfind_spec (PEP 451) tofind_module.

Incorporate changes from v44.1.0:

  • #1704: Set sys.argv[0] in setup script run by build_meta.__legacy__

  • #1959: Fix for Python 4: replace unsafe six.PY3 with six.PY2

  • #1994: Fixed a bug in the “setuptools.finalize_distribution_options” hook that lead to ignoring the order attribute of entry points managed by this hook.

v44.1.0

21 Mar 2020

Changes

  • #1704: Set sys.argv[0] in setup script run by build_meta.__legacy__

  • #1959: Fix for Python 4: replace unsafe six.PY3 with six.PY2

  • #1994: Fixed a bug in the “setuptools.finalize_distribution_options” hook that lead to ignoring the order attribute of entry points managed by this hook.

v46.0.0

08 Mar 2020

Breaking Changes

  • #65: Once again as in 3.0, removed the Features feature.

Changes

  • #1890: Fix vendored dependencies so importingsetuptools.extern.some_module gives the same object assetuptools._vendor.some_module. This makes Metadata picklable again.

  • #1899: Test suite now fails on warnings.

Documentation changes

  • #2011: Fix broken link to distutils docs on package_data

Misc

  • #1991: Include pkg_resources test data in sdist, so tests can be executed from it.

v45.3.0

07 Mar 2020

Changes

  • #1557: Deprecated eggsecutable scripts and updated docs.

  • #1904: Update msvc.py to use CPython 3.8.0 mechanism to find msvc 14+

v45.2.0

08 Feb 2020

Changes

  • #1905: Fixed defect in _imp, introduced in 41.6.0 when the ‘tests’ directory is not present.

  • #1941: Improve editable installs withPEP 518 build isolation:

    • The--user option is now always available. A warning is issued if the user site directory is not available.

    • The error shown when the install directory is not inPYTHONPATH has been turned into a warning.

  • #1981: Setuptools now declares itstests anddocs dependencies in metadata (extras).

  • #1985: Add support for installing scripts in environments where bdist_wininst is missing (i.e. Python 3.9).

Misc

  • #1968: Add flake8-2020 to check for misuse of sys.version or sys.version_info.

v45.1.0

19 Jan 2020

Changes

  • #1458: Add minimum sunset date and preamble to Python 2 warning.

  • #1704: Set sys.argv[0] in setup script run by build_meta.__legacy__

  • #1974: Add Python 3 Only Trove Classifier and remove universal wheel declaration for more complete transition from Python 2.

v45.0.0

11 Jan 2020

Breaking Changes

  • #1458: Drop support for Python 2. Setuptools now requires Python 3.5 or later. Install setuptools using pip >=9 or pin to Setuptools <45 to maintain 2.7 support.

Changes

  • #1959: Fix for Python 4: replace unsafe six.PY3 with six.PY2

v44.0.0

01 Jan 2020

Breaking Changes

  • #1908: Drop support for Python 3.4.

v43.0.0

31 Dec 2019

Breaking Changes

  • #1634: Includepyproject.toml in source distribution by default. Projects relying on the previous behavior wherepyproject.toml was excluded by default should stop relying on that behavior or addexcludepyproject.toml to their MANIFEST.in file.

Changes

  • #1927: Setuptools once again declares ‘setuptools’ in thebuild-system.requires and addsPEP 517 build support by declaring itself as thebuild-backend. It additionally specifiesbuild-system.backend-path to rely on itself for those builders that support it.

v42.0.2

01 Dec 2019

Changes

  • #1921: Fix support for easy_install’sfind-links option insetup.cfg.

  • #1922: Build dependencies (setup_requires and tests_require) now install transitive dependencies indicated by extras.

v42.0.1

25 Nov 2019

Changes

  • #1918: Fix regression in handling wheels compatibility tags.

v42.0.0

23 Nov 2019

Breaking Changes

  • #1830,#1909: Mark the easy_install script and setuptools command as deprecated, and usepip when available to fetch/build wheels for missingsetup_requires/tests_require requirements, with the following differences in behavior:
    • support forpython_requires

    • better support for wheels (proper handling of priority with respect toPEP 425 tags)

    • PEP 517/518 support

    • eggs are not supported

    • no support for theallow_hosts easy_install option (index_url/find_links are still honored)

    • pip environment variables are honored (and take precedence over easy_install options)

  • #1898: Removed the “upload” and “register” commands in favor oftwine.

Changes

  • #1767: Add support for thelicense_files option insetup.cfg to automaticallyinclude multiple license files in a source distribution.

  • #1829: Update handling of wheels compatibility tags:* add support for manylinux2010* fix use of removed ‘m’ ABI flag in Python 3.8 on Windows

  • #1861: Fix empty namespace package installation from wheel.

  • #1877: Setuptools now exposes a new entry point hook “setuptools.finalize_distribution_options”, enabling plugins likesetuptools_scm to configure options on the distribution at finalization time.

v41.6.0

29 Oct 2019

Changes

  • #479: Replace usage of deprecatedimp module with local re-implementation insetuptools._imp.

v41.5.1

28 Oct 2019

Changes

  • #1891: Fix code for detecting Visual Studio’s version on Windows under Python 2.

v41.5.0

27 Oct 2019

Changes

  • #1811: Improve Visual C++ 14.X support, mainly for Visual Studio 2017 and 2019.

  • #1814: Fixpkg_resources.Requirement hash/equality implementation: takePEP 508 direct URL into account.

  • #1824: Fix tests when running underpython3.10.

  • #1878: Formally deprecated thetest command, with the recommendation that users migrate totox.

Documentation changes

  • #1860: Update documentation to mention the egg format is not supported by pip and dependency links support was dropped starting with pip 19.0.

  • #1862: Drop ez_setup documentation: deprecated for some time (last updated in 2016), and still relying on easy_install (deprecated too).

  • #1868: Drop most documentation references to (deprecated) EasyInstall.

  • #1884: Added a trove classifier to document support for Python 3.8.

Misc

  • #1886: Added Python 3.8 release to the Travis test matrix.

v41.4.0

06 Oct 2019

Changes

  • #1847: In declarative config, now traps errors when invalidpython_requires values are supplied.

v41.3.0

06 Oct 2019

Changes

  • #1690: When storing extras, rely on OrderedSet to retain order of extras as indicated by the packager, which will also be deterministic on Python 2.7 (with PYTHONHASHSEED unset) and Python 3.6+.

Misc

  • #1858: Fixed failing integration test triggered by ‘long_description_content_type’ in packaging.

v41.2.0

21 Aug 2019

Changes

  • #479: Remove some usage of the deprecatedimp module.

Misc

v41.1.0

13 Aug 2019

Misc

  • #1697: Moved most of the constants from setup.py to setup.cfg

  • #1749: Fixed issue with thePEP 517 backend where building a source distribution would fail if any tarball existed in the destination directory.

  • #1750: Fixed an issue withPEP 517 backend where wheel builds would fail if the destination directory did not already exist.

  • #1756: Force metadata-version >= 1.2. when project urls are present.

  • #1769: Improvepackage_data check: ensure the dictionary values are lists/tuples of strings.

  • #1788: Changed compatibility fallback logic forhtml.unescape to avoid accessingHTMLParser.unescape when not necessary.HTMLParser.unescape is deprecated and will be removed in Python 3.9.

  • #1790: Added the file path to the error message when aUnicodeDecodeError occurs while reading a metadata file.

Documentation changes

  • #1776: Use license classifiers rather than the license field.

v41.0.1

22 Apr 2019

Changes

  • #1671: Fixed issue with thePEP 517 backend that prevented building a wheel when thedist/ directory contained existing.whl files.

  • #1709: In test.paths_on_python_path, avoid adding unnecessary duplicates to the PYTHONPATH.

  • #1741: In package_index, now honor “current directory” during a checkout of git and hg repositories under Windows

v41.0.0

05 Apr 2019

Breaking Changes

  • #1735: When parsing setup.cfg files, setuptools now requires the files to be encoded as UTF-8. Any other encoding will lead to a UnicodeDecodeError. This change removes support for specifying an encoding using a ‘coding: ‘ directive in the header of the file, a feature that was introduces in 40.7. Given the recent release of the aforementioned feature, it is assumed that few if any projects are utilizing the feature to specify an encoding other than UTF-8.

v40.9.0

03 Apr 2019

Changes

  • #1675: Added support forsetup.cfg-only projects when using thesetuptools.build_meta backend. Projects that have enabledPEP 517 no longer need to have asetup.py and can use the purely declarativesetup.cfg configuration file instead.

  • #1720: Added support forpkg_resources.parse_requirements-style requirements insetup_requires whensetup.py is invoked from thesetuptools.build_meta build backend.

  • #1664: Added the path to thePKG-INFO orMETADATA file in the exceptiontext when theVersion: header can’t be found.

Documentation changes

  • #1705: Removed some placeholder documentation sections referring to deprecated features.

v40.8.0

05 Feb 2019

Changes

  • #1652: Added thebuild_meta:__legacy__ backend, a “compatibility mode”PEP 517 backend that can be used as the default whenbuild-backend is left unspecified inpyproject.toml.

  • #1635: Resource paths are passed topkg_resources.resource_string and similar no longer accept paths that traverse parents, that begin with a leading/. Violations of this expectation raise DeprecationWarnings and will become errors. Additionally, any paths that are absolute on Windows are strictly disallowed and will raise ValueErrors.

  • #1536:setuptools will now automatically include licenses ifsetup.cfg contains alicense_file attribute, unless this file is manually excluded insideMANIFEST.in.

v40.7.3

03 Feb 2019

Changes

  • #1670: In package_index, revert to using a copy of splituser from Python 3.8. Attempts to useurllib.parse.urlparse led to problems as reported in#1663 and#1668. This change serves as an alternative to#1499 and fixes#1668.

v40.7.2

31 Jan 2019

Changes

  • #1666: Restore port in URL handling in package_index.

v40.7.1

28 Jan 2019

Changes

  • #1660: On Python 2, when reading config files, downcast options from text to bytes to satisfy distutils expectations.

v40.7.0

27 Jan 2019

Breaking Changes

  • #1551: File inputs for thelicense field insetup.cfg files now explicitly raise an error.

Changes

  • #1180: Add support for non-ASCII in setup.cfg (#1062). Add support for native strings on some parameters (#1136).

  • #1499:setuptools.package_index no longer relies on the deprecatedurllib.parse.splituser perPython #27485.

  • #1544: Added tests for PackageIndex.download (for git URLs).

  • #1625: InPEP 517 build_meta builder, ensure that sdists are built as gztar per the spec.

v40.6.3

11 Dec 2018

Changes

  • #1594:PEP 517 backend no longer declares setuptools as a dependency as it can be assumed.

v40.6.2

13 Nov 2018

Changes

  • #1592: Fix invalid dependency on external six module (instead of vendored version).

v40.6.1

12 Nov 2018

Changes

  • #1590: Fixed regression where packages withoutauthor orauthor_email fields generated malformed package metadata.

v40.6.0

12 Nov 2018

Deprecations

  • #1541: Officially deprecated therequires parameter insetup().

Changes

  • #1519: Inpkg_resources.normalize_path, additional path normalization is now performed to ensure path values to a directory is always the same, preventing false positives when checking scripts have a consistent prefix to set up on Windows.

  • #1545: Changed the warning class of all deprecation warnings; deprecation warning classes are no longer derived fromDeprecationWarning and are thus visible by default.

  • #1554:build_meta.build_sdist now includessetup.py in source distributions by default.

  • #1576: Started monkey-patchingget_metadata_version andread_pkg_file ontodistutils.DistributionMetadata to retain the correct version on thePKG-INFO file in the (deprecated)upload command.

Documentation changes

  • #1395: Changed Pyrex references to Cython in the documentation.

  • #1456: Documented that therpmbuild packages is required for thebdist_rpm command.

  • #1537: Documented how to usesetup.cfg forsrc/layouts

  • #1539: Added minimum version column insetup.cfg metadata table.

  • #1552: Fixed a minor typo in the python 2/3 compatibility documentation.

  • #1553: Updated installation instructions to point topipinstall instead ofez_setup.py.

  • #1560: Updatedsetuptools distribution documentation to remove some outdated information.

  • #1564: Documentedsetup.cfg minimum version for version and project_urls.

Misc

  • #1533: Restricted therecursive-includesetuptools/_vendor to contain only .py and .txt files.

  • #1572: Added theconcurrent.futures backportfutures to the Python 2.7 test suite requirements.

v40.5.0

26 Oct 2018

Changes

  • #1335: Inpkg_resources.normalize_path, fix issue on Cygwin when cwd contains symlinks.

  • #1502: Deprecated support for downloads from Subversion in package_index/easy_install.

  • #1517: Dropped use of six.u in favor ofu"" literals.

  • #1520: Added support fordata_files insetup.cfg.

Documentation changes

  • #1525: Fixed rendering of the deprecation warning in easy_install doc.

v40.4.3

23 Sep 2018

Changes

  • #1480: Bump vendored pyparsing in pkg_resources to 2.2.1.

v40.4.2

21 Sep 2018

Misc

  • #1497: Updated gitignore in repo.

v40.4.1

18 Sep 2018

Changes

  • #1480: Bump vendored pyparsing to 2.2.1.

v40.4.0

18 Sep 2018

Changes

  • #1481: Join the sdist--dist-dir and thebuild_meta sdist directory argument to point to the same target (meaning the build frontend no longer needs to clean manually the dist dir to avoid multiple sdist presence, and setuptools no longer needs to handle conflicts between the two).

v40.3.0

16 Sep 2018

Changes

  • #1402: Fixed a bug with namespace packages under Python 3.6 when one package incurrent directory hides another which is installed.

  • #1427: Set timestamp of.egg-info directory wheneveregg_info command is run.

  • #1474:build_meta.get_requires_for_build_sdist now does not include thewheel package anymore.

  • #1486: Suppress warnings in pkg_resources.handle_ns.

Misc

  • #1479: Remove internal use of six.binary_type.

v40.2.0

21 Aug 2018

Changes

v40.1.1

21 Aug 2018

Changes

  • #1465: Fix regression withegg_info command when tagging is used.

v40.1.0

17 Aug 2018

Changes

  • #1410: Deprecatedupload andregister commands.

  • #1312: Introduced find_namespace_packages() to findPEP 420 namespace packages.

  • #1420: Added find_namespace: directive to config parser.

  • #1418: Solved race in when creating egg cache directories.

  • #1450: Upgraded vendored PyParsing from 2.1.10 to 2.2.0.

  • #1451: Upgraded vendored appdirs from 1.4.0 to 1.4.3.

  • #1388: Fixed “Microsoft Visual C++ Build Tools” link in exception when Visual C++ not found.

  • #1389: Added support for scripts which have unicode content.

  • #1416: Moved several Python version checks over to usingsix.PY2 andsix.PY3.

Misc

  • #1441: Removed spurious executable permissions from files that don’t need them.

v40.0.0

09 Jul 2018

Breaking Changes

  • #1342: Drop support for Python 3.3.

Changes

  • #1366: In package_index, fixed handling of encoded entities in URLs.

  • #1383: In pkg_resources VendorImporter, avoid removing packages imported from the root.

Documentation changes

  • #1379: Minor doc fixes after actually using the new release process.

  • #1385: Removed section on non-package data files.

  • #1403: Fix developer’s guide.

Misc

  • #1404: FixPEP 518 configuration: set build requirements inpyproject.toml to["wheel"].

v39.2.0

19 May 2018

Changes

  • #1359: Support using “file:” to load aPEP 440-compliant package version froma text file.

  • #1360: Fixed issue with a mismatch between the name of the package and thename of the .dist-info file in wheel files

  • #1364: Add__dir__() implementation topkg_resources.Distribution() thatincludes the attributes in the_provider instance variable.

  • #1365: Take the package_dir option into account when loading the version froma module attribute.

Documentation changes

  • #1353: Added coverage badge to README.

  • #1356: Made small fixes to the developer guide documentation.

  • #1357: Fixed warnings in documentation builds and started enforcing that thedocs build without warnings in tox.

  • #1376: Updated release process docs.

Misc

  • #1343: Thesetuptools specificlong_description_content_type,project_urls andprovides_extras fields are now set consistentlyafter anydistutilssetup_keywords calls, allowing them to overridevalues.

  • #1352: Addedtox environment for documentation builds.

  • #1354: Addedtowncrier for changelog management.

  • #1355: Add PR template.

  • #1368: Fixed tests which failed without network connectivity.

  • #1369: Added unit tests forPEP 425 compatibility tags support.

  • #1372: Stop testing Python 3.3 in Travis CI, now that the latest version ofwheel no longer installs on it.

v39.1.0

28 Apr 2018

  • #1340: Update all PyPI URLs to reflect the switch to thenew Warehouse codebase.

  • #1337: Inpkg_resources, now support loading resourcesfor modules loaded by theSourcelessFileLoader.

  • #1332: Silence spurious wheel related warnings on Windows.

v39.0.1

18 Mar 2018

  • #1297: Restore Unicode handling for Maintainer fields inmetadata.

v39.0.0

17 Mar 2018

  • #1296: Setuptools now vendors its own direct dependencies, nolonger relying on the dependencies as vendored by pkg_resources.

  • #296: Removed long-deprecated support for iteration onVersion objects as returned bypkg_resources.parse_version.Removed theSetuptoolsVersion andSetuptoolsLegacyVersion names as well. They should nothave been used, but if they were, replace withVersion andLegacyVersion frompackaging.version.

v38.7.0

17 Mar 2018

  • #1288: Add support for maintainer in PKG-INFO.

v38.6.1

17 Mar 2018

  • #1292: Avoid generatingProvides-Extra in metadata whenno extra is present (but environment markers are).

v38.6.0

15 Mar 2018

v38.5.2

06 Mar 2018

  • #1285: Fixed RuntimeError in pkg_resources.parse_requirementson Python 3.7 (stemming fromPEP 479).

v38.5.1

06 Feb 2018

  • #1271: Revert to Cython legacybuild_ext behavior forcompatibility.

v38.5.0

04 Feb 2018

  • #1229: Expand imports inbuild_ext to refine detection ofCython availability.

  • #1270: When Cython is available,build_ext now uses thenew_build_ext.

v38.4.1

03 Feb 2018

  • #1257: In bdist_egg.scan_module, fix ValueError on Python 3.7.

v38.4.0

05 Jan 2018

  • #1231: Removed warning when PYTHONDONTWRITEBYTECODE is enabled.

v38.3.0

04 Jan 2018

  • #1210: Add support forPEP 345 Project-URL metadata.

  • #1207: Add support forlong_description_type to setup.cfgdeclarative config as intended and documented.

v38.2.5

  • #1232: Fix trailing slash handling inpkg_resources.ZipProvider.

v38.2.4

04 Dec 2017

  • #1220: Fixdata_files handling when installing from wheel.

v38.2.3

28 Nov 2017

  • fix Travis’ Python 3.3 job.

v38.2.2

27 Nov 2017

  • #1214: fix handling of namespace packages when installingfrom a wheel.

v38.2.1

26 Nov 2017

  • #1212: fix encoding handling of metadata when installingfrom a wheel.

v38.2.0

26 Nov 2017

  • #1200: easy_install now support installing from wheels:they will be installed as standalone unzipped eggs.

v38.1.0

25 Nov 2017

  • #1208: Improve error message when failing to locate scriptsin egg-info metadata.

v38.0.0

25 Nov 2017

  • #458: In order to support deterministic builds, Setuptools nolonger allows packages to declareinstall_requires asunordered sequences (sets or dicts).

v37.0.0

20 Nov 2017

  • #878: Drop support for Python 2.6. Python 2.6 users shouldrely on ‘setuptools < 37dev’.

v36.8.0

19 Nov 2017

  • #1190: In SSL support for package index operations, use SNIwhere available.

v36.7.3

13 Nov 2017

  • #1175: Bug fixes tobuild_meta module.

v36.7.2

13 Nov 2017

  • #701: Fixed duplicate test discovery on Python 3.

v36.7.1

11 Nov 2017

  • #1193: Avoid test failures in bdist_egg whenPYTHONDONTWRITEBYTECODE is set.

v36.7.0

09 Nov 2017

  • #1054: Supportsetup_requires insetup.cfg files.

v36.6.1

09 Nov 2017

  • #1132: Removed redundant and costly serialization/parsing stepinEntryPoint.__init__.

  • #844:bdist_egg--exclude-source-files now tested and workson Python 3.

v36.6.0

12 Oct 2017

  • #1143: Addedsetuptools.build_meta module, an implementationofPEP-517 for Setuptools-defined packages.

  • #1143: Addeddist_info command for producing dist_infometadata.

v36.5.0

15 Sep 2017

  • #170: When working with Mercurial checkouts, use Windows-friendlysyntax for suppressing output.

  • Inspired by#1134, performed substantial refactoring ofpkg_resources.find_on_path to facilitate an optimizationfor paths with many non-version entries.

v36.4.0

03 Sep 2017

  • #1075: Add newDescription-Content-Type metadata field.See here fordocumentation on how to use this field.

  • #1068: Sort files and directories when building eggs fordeterministic order.

  • #196: Remove caching of easy_install command in fetch_build_egg.Fixes issue wherepytest-runner-N.N would satisfy the installationofpytest.

  • #1129: Fix working set dependencies handling when replacing conflictingdistributions (e.g. when usingsetup_requires with a conflictingtransitive dependency, fix#1124).

  • #1133: Improved handling of README files extensions and addedMarkdown to the list of searched READMES.

  • #1135: Improve performance of pkg_resources import by not invokingaccess orstat and usingos.listdir instead.

v36.3.0

28 Aug 2017

  • #1131: Make possible using several files withinfile: directivein metadata.long_description insetup.cfg.

v36.2.7

02 Aug 2017

  • fix#1105: Fix handling of requirements with environmentmarkers when declared insetup.cfg (same treatment asfor#1081).

v36.2.6

31 Jul 2017

  • #462: Don’t assume a directory is an egg by the.eggextension alone.

v36.2.5

30 Jul 2017

  • #1093: Fix test command handler with extras_require.

  • #1112,#1091,#1115: Now using Trusty containers inTravis for CI and CD.

v36.2.4

26 Jul 2017

  • #1092:pkg_resources now usesinspect.getmro toresolve classes in method resolution order.

v36.2.3

25 Jul 2017

  • #1102: Restore behavior for empty extras.

v36.2.2

24 Jul 2017

  • #1099: Revert commit a3ec721, restoring intended purpose ofextras as part of a requirement declaration.

v36.2.1

23 Jul 2017

  • fix#1086

  • fix#1087

  • support extras specifiers in install_requires requirements

v36.2.0

13 Jul 2017

  • #1081: Environment markers indicated ininstall_requiresare now processed and treated as namelessextras_requirewith markers, allowing their metadata in requires.txt to becorrectly generated.

  • #1053: Tagged commits are now released using Travis-CIbuild stages, meaning releases depend on passing tests onall supported Python versions (Linux) and not just the latestPython version.

v36.1.1

13 Jul 2017

  • #1083: Correctpy31compat.makedirs to correctly honorexist_ok parameter.

  • #1083: Also use makedirs compatibility throughout setuptools.

v36.1.0

13 Jul 2017

  • #1083: Avoid race condition on directory creation inpkg_resources.ensure_directory.

  • Removed deprecation of and restored support forupload_docs command for sites other than PyPI.Only warehouse is dropping support, but services likedevpi continue tosupport docs built by setuptools’ plugins. Seethis commentfor more context on the motivation for this change.

v36.0.1

01 Jun 2017

  • #1042: Fix import in py27compat module that stillreferenced six directly, rather than through the externsmodule (vendored packages hook).

v36.0.0

30 May 2017

  • #980 and others: Once again, Setuptools vendors allof its dependencies. It seems to be the case that inthe Python ecosystem, all build tools must run withoutany dependencies (build, runtime, or otherwise). Atsuch a point that a mechanism exists that allowsbuild tools to have dependencies, Setuptools will adoptit.

v35.0.2

27 Apr 2017

v35.0.1

18 Apr 2017

  • #992: Revert change introduced in v34.4.1, nowconsidered invalid.

  • #1016: Revert change introduced in v35.0.0 per#1014,referencing#436. The approach had unintendedconsequences, causing sdist installs to be missingfiles.

v35.0.0

15 Apr 2017

  • #436: In egg_info.manifest_maker, no longer readthe file list from the manifest file, and insteadre-build it on each build. In this way, files removedfrom the specification will not linger in the manifest.As a result, any files manually added to the manifestwill be removed on subsequent egg_info invocations.No projects should be manually adding files to themanifest and should instead use MANIFEST.in or SCMfile finders to force inclusion of files in the manifest.

v34.4.1

10 Apr 2017

  • #1008: In MSVC support, use always the last version available for Windows SDK and UCRT SDK.

  • #1008: In MSVC support, fix “vcruntime140.dll” returned path with Visual Studio 2017.

  • #992: In msvc.msvc9_query_vcvarsall, ensure thereturned dicts have str values and not Unicode forcompatibility with os.environ.

v34.4.0

07 Apr 2017

  • #995: In MSVC support, add support for “Microsoft Visual Studio 2017” and “Microsoft Visual Studio Build Tools 2017”.

  • #999 via#1007: Extend support for declarative packageconfig in a setup.cfg file to include the optionspython_requires andpy_modules.

v34.3.3

26 Mar 2017

  • #967 (and#997): Explicitly import submodules ofpackaging to account for environments where the importsof those submodules is not implied by other behavior.

v34.3.2

11 Mar 2017

  • #993: Fix documentation upload by correctingrendering of content-type in _build_multiparton Python 3.

v34.3.1

02 Mar 2017

  • #988: Trapos.unlink same asos.remove inauto_chmod error handler.

  • #983: Fixes to invalid escape sequence deprecations onPython 3.6.

v34.3.0

23 Feb 2017

  • #941: In the upload command, if the username is blank,default togetpass.getuser().

  • #971: Correct distutils findall monkeypatch to matchappropriate versions (namely Python 3.4.6).

v34.2.0

12 Feb 2017

  • #966: Add support for reading dist-info metadata andthus locating Distributions from zip files.

  • #968: Allow ‘+’ and ‘!’ in egg fragmentsso that it can take package names that containPEP 440 conforming version specifiers.

v34.1.1

03 Feb 2017

  • #953: More aggressively employ the compatibility issueoriginally added in#706.

v34.1.0

28 Jan 2017

  • #930:build_info now accepts two new parametersto optimize and customize the building of C libraries.

v34.0.3

28 Jan 2017

  • #947: Loosen restriction on the version of six required,restoring compatibility with environments relying onsix 1.6.0 and later.

v34.0.2

24 Jan 2017

  • #882: Ensure extras are honored when building theworking set.

  • #913: Fix issue in develop if package directory hasa trailing slash.

v34.0.1

23 Jan 2017

  • #935: Fix glob syntax in graft.

v34.0.0

23 Jan 2017

  • #581: Instead of vendoring the growing list ofdependencies that Setuptools requires to function,Setuptools now requires these dependencies just likeany other project. Unlike other projects, however,Setuptools cannot rely onsetup_requires todemand the dependencies it needs to install becauseits own machinery would be necessary to pull thosedependencies if not present (a bootstrapping problem).As a result, Setuptools no longer supports self upgrade orinstallation in the general case. Instead, users aredirected to use pip to install and upgrade using thewheel distributions of setuptools.

    Users are welcome to contrive other means to installor upgrade Setuptools using other means, such aspre-installing the Setuptools dependencies with pipor a bespoke bootstrap tool, but such usage is notrecommended and is not supported.

    As discovered in#940, not all versions of pip willsuccessfully install Setuptools from its pre-builtwheel. If you encounter issues with “No module namedsix” or “No module named packaging”, especiallyfollowing a line “Running setup.py egg_info for packagesetuptools”, then your pip is not new enough.

    There’s an additional issue in pip where setuptoolsis upgraded concurrently with other source packages,described in pip#4253. The proposed workaround is toalways upgrade Setuptools first prior to upgradingother packages that would upgrade Setuptools.

v33.1.1

16 Jan 2017

  • #921: Correct issue where certifi fallback not beingreached on Windows.

v33.1.0

15 Jan 2017

Installation via pip, as indicated in thePython PackagingUser’s Guide,is the officially-supported mechanism for installingSetuptools, and this recommendation is now explicit in themuch more concise README.

Other edits and tweaks were made to the documentation. Thecodebase is unchanged.

v33.0.0

01 Jan 2017

  • #619: Removed support for thetag_svn_revisiondistribution option. If Subversion tagging support isstill desired, consider adding the functionality tosetuptools_svn insetuptools_svn #2.

v32.3.1

28 Dec 2016

  • #866: Usedis.Bytecode on Python 3.4 and later insetuptools.depends.

v32.3.0

24 Dec 2016

  • #889: Backport proposed fix for disabling interpolation indistutils.Distribution.parse_config_files.

v32.2.0

22 Dec 2016

  • #884: Restore support for running the tests underpytest-runnerby ensuring that PYTHONPATH is honored in tests invokinga subprocess.

v32.1.3

21 Dec 2016

  • #706: Add rmtree compatibility shim for environments wherermtree fails when passed a unicode string.

v32.1.2

18 Dec 2016

  • #893: Only release sdist in zip format as warehouse nowdisallows releasing two different formats.

v32.1.1

18 Dec 2016

  • #704: More selectively ensure that ‘rmtree’ is not invoked witha byte string, enabling it to remove files that are non-ascii,even on Python 2.

  • #712: In ‘sandbox.run_setup’, ensure that__file__ isalways astr, modeling the behavior observed by theinterpreter when invoking scripts and modules.

v32.1.0

16 Dec 2016

  • #891: In ‘test’ command on test failure, raise DistutilsError,suppression invocation of subsequent commands.

v32.0.0

14 Dec 2016

  • #890: Revert#849.global-exclude.foo will not match all*.foo files any more. Package authors must add an explicitwildcard, such asglobal-exclude*.foo, to match all.foo files. See#886,#849.

v31.0.1

14 Dec 2016

  • #885: Fix regression where ‘pkg_resources._rebuild_mod_path’would fail when a namespace package’s ‘__path__’ was nota list with a sort attribute.

v31.0.0

11 Dec 2016

  • #250: Install ‘-nspkg.pth’ files for packages installedwith ‘setup.py develop’. These .pth files allownamespace packages installed by pip or develop toco-mingle. This change required the removal of thechange for#805 and pip#1924, introduced in 28.3.0 and implicatedin#870, but means that namespace packages not in asite packages directory will no longer work on Pythonearlier than 3.5, whereas before they would work onPython not earlier than 3.3.

v30.4.0

10 Dec 2016

  • #879: For declarative config:

    • read_configuration() now accepts ignore_option_errors argument. This allows scraping tools to read metadata without a need to download entire packages. E.g. we can gather some stats right from GitHub repos just by downloading setup.cfg.

    • packages find: directive now supports fine tuning from a subsection. The same arguments as for find() are accepted.

v30.3.0

08 Dec 2016

v30.2.1

08 Dec 2016

  • #850: In test command, invoke unittest.main withindication not to exit the process.

v30.2.0

04 Dec 2016

v30.1.0

03 Dec 2016

  • #846: Also trap ‘socket.error’ when opening URLs inpackage_index.

  • #849: Manifest processing now matches the filenamepattern anywhere in the filename and not just at thestart. Restores behavior found prior to 28.5.0.

v30.0.0

01 Dec 2016

  • #864: Drop support for Python 3.2. Systems requiringPython 3.2 support must use ‘setuptools < 30’.

  • #825: Suppress warnings for single files.

  • #830 via#843: Once again restored inclusion of datafiles to sdists, but now trap TypeError caused bytechniques employed rjsmin and similar.

v29.0.1

26 Nov 2016

  • #861: Re-release of v29.0.1 with the executable scriptlaunchers bundled. Now, launchers are included by defaultand users that want to disable this behavior must set theenvironment variable‘SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES’ toa false value like “false” or “0”.

v29.0.0

25 Nov 2016

  • #841: Drop special exception for packages invokingwin32com during the build/install process. SeeDistribute #118 for history.

v28.8.0

04 Nov 2016

  • #629: Per the discussion, refine the sorting to use versionvalue order for more accurate detection of the latestavailable version when scanning for packages. See also#829.

  • #837: Rely on the config var “SO” for Python 3.3.0 onlywhen determining the ext filename.

v28.7.1

29 Oct 2016

  • #827: Update PyPI root for dependency links.

  • #833: Backed out changes from#830 as the implementationseems to have problems in some cases.

v28.7.0

28 Oct 2016

  • #832: Moved much of the namespace package handlingfunctionality into a separate module for re-use in somethinglike#789.

  • #830:sdist command no longer suppresses the inclusionof data files, re-aligning with the expectation of distutilsand addressing#274 and#521.

v28.6.1

19 Oct 2016

  • #816: Fix manifest file list order in tests.

v28.6.0

16 Oct 2016

  • #629: When scanning for packages,pkg_resources nowignores empty egg-info directories and gives precedence topackages whose versions are lexicographically greatest,a rough approximation for preferring the latest availableversion.

v28.5.0

14 Oct 2016

  • #810: Tests are now invoked with tox and not setup.py test.

  • #249 and#450 via#764: Avoid scanning the whole treewhen building the manifest. Also fixes a long-standing bugwhere patterns inMANIFEST.in had implicit wildcardmatching. This causedglobal-exclude.foo to excludeall*.foo files, but alsoglobal-excludebar.py toexcludefoo_bar.py.

v28.4.0

14 Oct 2016

  • #732: Now extras with a hyphen are honored perPEP 426.

  • #811: Update to pyparsing 2.1.10.

  • Updatedsetuptools.command.sdist to re-use most ofthe functionality directly fromdistutils.command.sdistfor theadd_defaults method with strategic overrides.See#750 for rationale.

  • #760 via#762: Look for certificate bundle where SUSELinux typically presents it. Usecertifi.where() to locatethe bundle.

v28.3.0

07 Oct 2016

  • #809: Infind_packages(), restore support for excludinga parent package without excluding a child package.

  • #805: Disable-nspkg.pth behavior on Python 3.3+ wherePEP-420 functionality is adequate. Fixes pip#1924.

v28.1.0

01 Oct 2016

  • #803: Bump certifi to 2016.9.26.

v28.0.0

27 Sep 2016

  • #733: Do not search excluded directories for packages.This introduced a backwards incompatible change infind_packages()so thatfind_packages(exclude=['foo'])==[], excluding subpackages offoo.Previously,find_packages(exclude=['foo'])==['foo.bar'],even though the parentfoo package was excluded.

  • #795: Bump certifi.

  • #719: Suppress decoding errors and instead log a warningwhen metadata cannot be decoded.

v27.3.1

27 Sep 2016

  • #790: In MSVC monkeypatching, explicitly patch eachfunction by name in the target module instead of inferringthe module from the function’s__module__. Improvescompatibility with other packages that might have previouslypatched distutils functions (i.e. NumPy).

v27.3.0

20 Sep 2016

  • #794: In test command, add installed eggs to PYTHONPATHwhen invoking tests so that subprocesses will also have thedependencies available. Fixestox 330.

  • #795: Update vendored pyparsing 2.1.9.

v27.2.0

14 Sep 2016

  • #520 and#513: Suppress ValueErrors in fixup_namespace_packageswhen lookup fails.

  • Nicer, more consistent interfaces for msvc monkeypatching.

v27.1.2

09 Sep 2016

v27.1.1

09 Sep 2016

  • #778: Fix MSVC monkeypatching.

v27.1.0

09 Sep 2016

  • Introduce the (private)monkey module to encapsulatethe distutils monkeypatching behavior.

v27.0.0

09 Sep 2016

  • Now use Warehouse by default forupload, patchingdistutils.config.PyPIRCCommand toaffect default behavior.

    Any config in .pypirc should be updated to replace

    with

    Similarly, any passwords stored in the keyring should beupdated to use this new value for “system”.

    Theupload_docs command will continue to use the python.orgsite, but the command is now deprecated. Users are urged to useRead The Docs instead.

  • #776: Use EXT_SUFFIX for py_limited_api renaming.

  • #774 and#775: Use LegacyVersion from packaging whendetecting numpy versions.

v26.1.1

29 Aug 2016

  • Re-release of 26.1.0 with pytest pinned to allow for automateddeployment and thus proper packaging environment variables,fixing issues with missing executable launchers.

v26.1.0

28 Aug 2016

  • #763:pkg_resources.get_default_cache now defers to theappdirs project toresolve the cache directory. Adds a vendored dependency onappdirs to pkg_resources.

v26.0.0

20 Aug 2016

  • #748: By default, sdists are now produced in gzipped tarfileformat by default on all platforms, adding forward compatibilityfor the same behavior in Python 3.6 (SeePython #27819).

  • #459 via#736: On Windows with script launchers,sys.argv[0] now reflectsthe name of the entry point, consistent with the behavior indistlib and pip wrappers.

  • #752 via#753: When indicatingpy_limited_api to Extension,it must be passed as a keyword argument.

v25.4.0

19 Aug 2016

  • Add Extension(py_limited_api=True). When set to a truthy value,that extension gets a filename appropriate for code using Py_LIMITED_API.When used correctly this allows a single compiled extension to work onall future versions of CPython 3.The py_limited_api argument only controls the filename. To becompatible with multiple versions of Python 3, the C extensionwill also need to set -DPy_LIMITED_API=… and be modified to useonly the functions in the limited API.

v25.3.0

19 Aug 2016

  • #739 Fix unquoted libpaths by fixing compatibility betweennumpy.distutils anddistutils._msvccompiler for numpy < 1.11.2 (Fix issue#728, error also fixed in Numpy).

  • #731: Bump certifi.

  • Style updates. See#740,#741,#743,#744,#742,#747.

  • #735: include license file.

v25.2.0

12 Aug 2016

  • #612 via#730: Add a LICENSE file which needs to be provided by the terms ofthe MIT license.

v25.1.6

05 Aug 2016

  • #725: revertlibrary_dir_option patch (Error is related tonumpy.distutils and make errors on non Numpy users).

v25.1.5

05 Aug 2016

  • #720

  • #723: Improve patch forlibrary_dir_option.

v25.1.4

04 Aug 2016

  • #717

  • #713

  • #707: Fix Python 2 compatibility for MSVC by catching errors properly.

  • #715: Fix unquoted libpaths by patchinglibrary_dir_option.

v25.1.3

02 Aug 2016

  • #714 and#704: Revert fix as it breaks other componentsdownstream that can’t handle unicode. See#709,#710,and#712.

v25.1.2

01 Aug 2016

  • #704: Fix errors when installing a zip sdist that containedfiles named with non-ascii characters on Windows wouldcrash the install when it attempted to clean up the build.

  • #646: MSVC compatibility - catch errors properly inRegistryInfo.lookup.

  • #702: Prevent UnboundLocalError when initial working_setis empty.

v25.1.1

28 Jul 2016

  • #686: Fix issue in sys.path ordering by pkg_resources whenrewrite technique is “raw”.

  • #699: Fix typo in msvc support.

v25.1.0

25 Jul 2016

  • #609: Setuptools will now try to download a distribution fromthe next possible download location if the first download fails.This means you can now specify multiple links asdependency_linksand all links will be tried until a working download link is encountered.

v25.0.2

25 Jul 2016

  • #688: Fix AttributeError in setup.py when invoked not fromthe current directory.

v25.0.1

25 Jul 2016

  • Cleanup of setup.py script.

  • Fixed documentation builders by allowing setup.pyto be imported without having bootstrapped themetadata.

  • More style cleanup. See#677,#678,#679,#681,#685.

v25.0.0

23 Jul 2016

  • #674: Defaultsys.path manipulation by easy-install.pthis now “raw”, meaning that when writing easy-install.pthduring any install operation, thesys.path will not berewritten and will no longer give preference to easy_installedpackages.

    To retain the old behavior when using any easy_installoperation (includingsetup.pyinstall when setuptools ispresent), set the environment variable:

    SETUPTOOLS_SYS_PATH_TECHNIQUE=rewrite

    This project hopes that that few if any environments find itnecessary to retain the old behavior, and intends to dropsupport for it altogether in a future release. Please reportany relevant concerns in the ticket for this change.

v24.3.1

23 Jul 2016

  • #398: Fix shebang handling on Windows in scriptheaders where spaces insys.executable wouldproduce an improperly-formatted shebang header,introduced in 12.0 with the fix for#188.

  • #663,#670: More style updates.

v24.3.0

21 Jul 2016

  • #516: Disableos.link to avoid hard linkinginsdist.make_distribution, avoiding errors onsystems that support hard links but not on thefile system in which the build is occurring.

v24.2.1

21 Jul 2016

  • #667: Update Metadata-Version to 1.2 whenpython_requires is supplied.

v24.2.0

20 Jul 2016

  • #631: Add support forpython_requires keyword.

v24.1.1

20 Jul 2016

v24.1.0

20 Jul 2016

  • #659:setup.py now will fail fast and with a helpfulerror message when the necessary metadata is missing.

  • More style updates. See#656,#635,#640,#644,#650,#652, and#655.

v24.0.3

14 Jul 2016

v24.0.2

04 Jul 2016

  • If MSVC++14 is neededsetuptools.msvc now redirectuser to Visual C++ Build Tools web page.

v24.0.1

03 Jul 2016

  • #625 and#626: Fixes onsetuptools.msvc mainlyfor Python 2 and Linux.

v24.0.0

02 Jul 2016

  • Pull Request#174: Add more aggressive support forstandalone Microsoft Visual C++ compilers inmsvc9compiler patch.Particularly : Windows SDK 6.1 and 7.0(MSVC++ 9.0), Windows SDK 7.1 (MSVC++ 10.0),Visual C++ Build Tools 2015 (MSVC++14)

  • Renamedsetuptools.msvc9_support tosetuptools.msvc.

v23.2.1

02 Jul 2016

Re-release of v23.2.0, which was missing the intendedcommits.

  • #623: Remove used of deprecated ‘U’ flag when readingmanifests.

v23.1.0

24 Jun 2016

  • #619: Deprecatedtag_svn_revision distributionoption.

v23.0.0

09 Jun 2016

  • #611: Removed ARM executables for CLI and GUI scriptlaunchers on Windows. If this was a feature you caredabout, please comment in the ticket.

  • #604: Removed docs building support. The projectnow relies on documentation hosted athttps://setuptools.pypa.io/.

v22.0.5

03 Jun 2016

  • #604: Restore repository for upload_docs commandto restore publishing of docs during release.

v22.0.4

03 Jun 2016

  • #589: Upload releases to pypi.io using the uploadhostname and legacy path.

v22.0.3

03 Jun 2016

  • #589: Releases are now uploaded to pypi.io (Warehouse)even when releases are made on Twine via Travis.

v22.0.2

03 Jun 2016

  • #589: Releases are now uploaded to pypi.io (Warehouse).

v22.0.1

03 Jun 2016

  • #190: On Python 2, if unicode is passed for packages tobuild_py command, it will be handled just as withtext on Python 3.

v22.0.0

01 Jun 2016

Intended to be v21.3.0, but jaraco accidentally released asa major bump.

  • #598: Setuptools now lists itself first in the User-Agentfor web requests, better following the guidelines inRFC 7231.

v21.2.2

29 May 2016

  • Minor fixes to changelog and docs.

v21.2.1

22 May 2016

  • #261: Exclude directories when resolving globs inpackage_data.

v21.2.0

21 May 2016

  • #539: In the easy_install get_site_dirs, honor allpaths found insite.getsitepackages.

v21.1.0

18 May 2016

  • #572: In build_ext, now always import_CONFIG_VARSfromdistutils rather than fromsysconfigto allowdistutils.sysconfig.customize_compilerconfigure the OS X compiler for-dynamiclib.

v21.0.0

02 May 2016

  • Removed ez_setup.py from Setuptools sdist. Thebootstrap script will be maintained in its ownbranch and should be generally be retrieved fromits canonical location athttps://bootstrap.pypa.io/ez_setup.py.

v20.10.0

25 Apr 2016

  • #553: egg_info section is now generated in adeterministic order, matching the order generatedby earlier versions of Python. Except on Python 2.6,order is preserved when existing settings are present.

  • #556: Update toPackaging 16.7, restoring supportfor deprecatedpython_implmentation marker.

  • #555: Upload command now prompts for a passwordwhen uploading to PyPI (or other repository) if nopassword is present in .pypirc or in the keyring.

v20.9.0

16 Apr 2016

  • #548: Update certify version to 2016.2.28

  • #545: Safely handle deletion of non-zip eggs in rotatecommand.

v20.8.1

15 Apr 2016

  • Issue #544: Fix issue with extra environment markerprocessing in WorkingSet due to refactor in v20.7.0.

v20.8.0

15 Apr 2016

  • Issue #543: Re-release so that latest release doesn’tcause déjà vu with distribute and setuptools 0.7 inolder environments.

v20.7.0

10 Apr 2016

  • Refactored extra environment marker processingin WorkingSet.

  • Issue #533: Fixed intermittent test failures.

  • Issue #536: In msvc9_support, trap additional exceptionsthat might occur when importingdistutils.msvc9compiler in mingw environments.

  • Issue #537: Provide better context when packagemetadata fails to decode in UTF-8.

v20.6.8

09 May 2016

  • Issue #523: Restored support for environment markers,now honoring ‘extra’ environment markers.

v20.6.7

31 Mar 2016

  • Issue #523: Disabled support for environment markersintroduced in v20.5.

v20.6.6

30 Mar 2016

v20.6.0

29 Mar 2016

20.5

29 Mar 2016

  • BB Pull Request #185,#470: Add support for environment markersin requirements in install_requires, setup_requires,tests_require as well as adding a test for the existingextra_requires machinery.

20.4

29 Mar 2016

  • Issue #422: Moved hosting toGithubfromBitbucket.Issues have been migrated, though all issues and commentsare attributed to bb-migration. So if you have a particularissue or issues to which you’ve been subscribed, you willwant to “watch” the equivalent issue in Github.The Bitbucket project will be retained for the indefinitefuture, but Github now hosts the canonical project repository.

20.3.1

18 Mar 2016

  • Issue #519: Remove import hook when reloading thepkg_resources module.

  • BB Pull Request #184: Update documentation inpkg_resourcesaround newRequirement implementation.

20.3

15 Mar 2016

  • BB Pull Request #179:pkg_resources.Requirement objects arenow a subclass ofpackaging.requirements.Requirement,allowing any environment markers and url (if any) to beaffiliated with the requirement

  • BB Pull Request #179: Restore use of RequirementParseErrorexception unintentionally dropped in 20.2.

20.2.2

27 Feb 2016

  • Issue #502: Correct regression in parsing of multipleversion specifiers separated by commas and spaces.

20.2.1

24 Feb 2016

20.2

19 Feb 2016

20.1.1

12 Feb 2016

  • Updateupload_docs command to also honor keyringfor password resolution.

20.1

11 Feb 2016

  • Added support for using passwords from keyring in the uploadcommand. Seethe upload docsfor details.

20.0

07 Feb 2016

  • Issue #118: Once again omit the package metadata (egg-info)from the list of outputs in--record. This version of setuptoolscan no longer be used to upgrade pip earlier than 6.0.

19.7

03 Feb 2016

19.6.2

31 Jan 2016

  • Issue #491: Correct regression incurred in 19.4 wherea double-namespace package installed using pip wouldcause a TypeError.

19.6.1

29 Jan 2016

  • Restore compatibility for PyPy 3 compatibility lost in19.4.1 addressingIssue #487.

  • setuptools.launch shim now loads scripts in a newnamespace, avoiding getting relative imports fromthe setuptools package on Python 2.

19.6

24 Jan 2016

  • Added a new entry scriptsetuptools.launch,implementing the shim found inpip.util.setuptools_build. Use this command to launchdistutils-only packages under setuptools in the same way thatpip does, causing the setuptools monkeypatching of distutilsto be invoked prior to invoking a script. Useful for debuggingor otherwise installing a distutils-only package undersetuptools when pip isn’t available or otherwise does notexpose the desired functionality. For example:

    $ python -m setuptools.launch setup.py develop
  • Issue #488: Fix dual manifestation of Extension class inextension packages installed as dependencies when Cythonis present.

19.5

23 Jan 2016

19.4.1

23 Jan 2016

  • Issue #487: Use direct invocation ofimportlib.machineryinpkg_resources to avoid missing detection on relevantplatforms.

19.4

16 Jan 2016

  • Issue #341: Correct error in path handling of package datafiles inbuild_py command when package is empty.

  • Distribute #323,Issue #141,Issue #207, andBB Pull Request #167: Another implementation ofpkg_resources.WorkingSet andpkg_resources.Distributionthat supports replacing an extant package with a new one,allowing for setup_requires dependencies to supersede installedpackages for the session.

19.3

06 Jan 2016

  • Issue #229: Implement new technique for readily incorporatingdependencies conditionally from vendored copies or primarylocations. Adds a new dependency on six.

19.2

25 Dec 2015

19.1.1

16 Dec 2015

  • Issue #476: Cast version to string (using default encoding)to avoid creating Unicode types on Python 2 clients.

  • Issue #477: In Powershell downloader, use explicit renderingof strings, rather than rely onrepr, which can beincorrect (especially on Python 2).

19.1

16 Dec 2015

  • Issue #215: The bootstrap scriptez_setup.py nowautomatically detectsthe latest version of setuptools (using PyPI JSON API) ratherthan hard-coding a particular value.

  • Issue #475: Fix incorrect usage in _translate_metadata2.

19.0

15 Dec 2015

  • Issue #442: Use RawConfigParser for parsing .pypirc file.Interpolated values are no longer honored in .pypirc files.

18.8.1

13 Dec 2015

  • Issue #440: Prevent infinite recursion when a SandboxViolationor other UnpickleableException occurs in a sandbox contextwith setuptools hidden. Fixes regression introduced in Setuptools12.0.

18.8

11 Dec 2015

  • Deprecatedegg_info.get_pkg_info_revision.

  • Issue #471: Don’t rely on repr for an HTML attribute value inpackage_index.

  • Issue #419: Avoid errors in FileMetadata when the metadata directoryis broken.

  • Issue #472: Remove deprecated use of ‘U’ in mode parameterwhen opening files.

18.7.1

01 Dec 2015

18.7

28 Nov 2015

  • Update dependency on certify.

  • BB Pull Request #160: Improve detection of gui script ineasy_install._adjust_header.

  • Madetest.test_args a non-data property; alternate fixfor the issue reported inBB Pull Request #155.

  • Issue #453: Inez_setup bootstrap module, unload allpkg_resources modules following download.

  • BB Pull Request #158: HonorPEP-488 when excludingfiles for namespace packages.

  • Issue #419 andBB Pull Request #144: Add experimental support forreading the version info from distutils-installed metadata ratherthan using the version in the filename.

18.6.1

24 Nov 2015

  • Issue #464: Correct regression in invocation of superclass on old-styleclass on Python 2.

18.6

24 Nov 2015

  • Issue #439: When installing entry_point scripts under development,omit the version number of the package, allowing any version of thepackage to be used.

18.5

01 Nov 2015

18.4

10 Oct 2015

  • Issue #446: Test command now always invokes unittest, evenif no test suite is supplied.

18.3.2

19 Sep 2015

  • Correct another regression in setuptools.findallwhere the fix forPython #12885 was lost.

18.3.1

07 Sep 2015

  • Issue #425: Correct regression in setuptools.findall.

18.3

06 Sep 2015

  • BB Pull Request #135: Setuptools now allows disabling ofthe manipulation of the sys.pathduring the processing of the easy-install.pth file. To do so, setthe environment variableSETUPTOOLS_SYS_PATH_TECHNIQUE toanything but “rewrite” (consider “raw”). During any install operationwith manipulation disabled, setuptools packages will be appended tosys.path naturally.

    Future versions may change the default behavior to disablemanipulation. If so, the default behavior can be retained by settingthe variable to “rewrite”.

  • Issue #257:easy_install--version now shows more detailabout the installation location and Python version.

  • Refactor setuptools.findall in preparation for re-submissionback to distutils.

18.2

19 Aug 2015

  • Issue #412: More efficient directory search infind_packages.

18.1

02 Aug 2015

18.0.1

24 Jun 2015

18.0

13 Jun 2015

  • Dropped support for builds with Pyrex. Only Cython is supported.

  • Issue #288: Detect Cython later in the build process, aftersetup_requires dependencies are resolved.Projects backed by Cython can now be readily builtwith asetup_requires dependency. For example:

    ext=setuptools.Extension('mylib',['src/CythonStuff.pyx','src/CStuff.c'])setuptools.setup(...ext_modules=[ext],setup_requires=['cython'],)

    For compatibility with older versions of setuptools, packagers shouldstill includesrc/CythonMod.c in the source distributions orrequire that Cython be present before building source distributions.However, for systems with this build of setuptools, Cython will bedownloaded on demand.

  • Issue #396: Fixed test failure on OS X.

  • BB Pull Request #136: Remove excessive quoting from shebang headersfor Jython.

17.1.1

08 Jun 2015

  • Backed out unintended changes to pkg_resources, restoring removal ofdeprecated imp module (ref).

17.1

07 Jun 2015

  • Issue #380: Add support for range operators on environmentmarker evaluation.

17.0

28 May 2015

  • Issue #378: Do not use internal importlib._bootstrap module.

  • Issue #390: Disallow console scripts with path separators inthe name. Removes unintended functionality and brings behaviorinto parity with pip.

16.0

18 May 2015

15.2

26 Apr 2015

  • Issue #373: Provisionally exposepkg_resources._initialize_master_working_set, allowing forimperative re-initialization of the master working set.

15.1

15 Apr 2015

15.0

03 Apr 2015

  • BB Pull Request #126: DistributionNotFound message now lists the package orpackages that required it. E.g.:

    pkg_resources.DistributionNotFound:The'colorama>=0.3.1'distributionwasnotfoundandisrequiredbysmlib.log.

    Note that zc.buildout once dependended on the string rendering of thismessage to determine the package that was not found. This expectationhas since been changed, but older versions of buildout may experienceproblems. SeeBuildout #242 for details.

14.3.1

20 Mar 2015

  • Issue #307: RemovedPEP-440 warning during parsing of versionsinpkg_resources.Distribution.

  • Issue #364: Replace deprecated usage with recommended usage ofEntryPoint.load.

14.3

15 Mar 2015

  • Issue #254: When creating temporary egg cache on Unix, use mode 755for creating the directory to avoid the subsequent warning ifthe directory is group writable.

14.2

15 Mar 2015

  • Issue #137: UpdateDistribution.hashcmp so that Distributions withNone for pyversion or platform can be compared against Distributionsdefining those attributes.

14.1.1

14 Mar 2015

  • Issue #360: Removed undesirable behavior from test runs, preventingwrite tests and installation to system site packages.

14.1

14 Mar 2015

14.0

06 Mar 2015

  • Bootstrap script now accepts--to-dir to customize save directory orallow for re-use of existing repository of setuptools versions. SeeBB Pull Request #112 for background.

  • Issue #285:easy_install no longer will default to installingpackages to the “user site packages” directory if it is itself installedthere. Instead, the user must pass--user in all cases to installpackages to the user site packages.This behavior now matches that of “pip install”. To configurean environment to always install to the user site packages, considerusing the “install-dir” and “scripts-dir” parameters to easy_installthrough an appropriate distutils config file.

13.0.2

06 Mar 2015

  • Issue #359: Include pytest.ini in the sdist so invocation of py.test on thesdist honors the pytest configuration.

13.0.1

05 Mar 2015

Re-release of 13.0. Intermittent connectivity issues caused the releaseprocess to fail and PyPI uploads no longer accept files for 13.0.

13.0

05 Mar 2015

  • Issue #356: Back outBB Pull Request #119 as it requires Setuptools 10 or lateras the source during an upgrade.

  • Removed build_py class from setup.py. According to 892f439d216e, thisfunctionality was added to support upgrades from old Distribute versions,0.6.5 and 0.6.6.

12.4

04 Mar 2015

  • BB Pull Request #119: Restore writing ofsetup_requires to metadata(previously added in 8.4 and removed in 9.0).

12.3

26 Feb 2015

  • Documentation is now linked using the rst.linker package.

  • Fixsetuptools.command.easy_install.extract_wininst_cfg()with Python 2.6 and 2.7.

  • Issue #354. Added documentation on building setuptoolsdocumentation.

12.2

16 Feb 2015

  • Issue #345: Unload all modules under pkg_resources duringez_setup.use_setuptools().

  • Issue #336: Removed deprecation fromez_setup.use_setuptools,as it is clearly still used by buildout’s bootstrap.ez_setupremains deprecated for use by individual packages.

  • Simplified implementation ofez_setup.use_setuptools.

12.1

10 Feb 2015

12.0.5

26 Jan 2015

  • Issue #339: Correct Attribute reference incant_write_to_target.

  • Issue #336: Deprecatedez_setup.use_setuptools.

12.0.4

20 Jan 2015

  • Issue #335: Fix script header generation on Windows.

12.0.3

18 Jan 2015

  • Fixed incorrect class attribute ininstall_scripts. Tests would be nice.

12.0.2

18 Jan 2015

  • Issue #331: Fixedinstall_scripts command on Windows systems corruptingthe header.

12.0.1

16 Jan 2015

  • Restoresetuptools.command.easy_install.sys_executable for pbrcompatibility. For the future, tools should construct a CommandSpecexplicitly.

12.0

16 Jan 2015

  • Issue #188: Setuptools now support multiple entities in the value forbuild.executable, such that an executable of “/usr/bin/env my-python” maybe specified. This means that systems with a specified executable whose namehas spaces in the path must be updated to escape or quote that value.

  • Deprecatedeasy_install.ScriptWriter.get_writer, replaced by.best()with slightly different semantics (no force_windows flag).

11.3.1

06 Jan 2015

  • Issue #327: Formalize and restore support for any printable character in anentry point name.

11.3

05 Jan 2015

  • ExposeEntryPoint.resolve in place of EntryPoint._load, implementing thesimple, non-requiring load. Deprecated all uses ofEntryPoint._loadexcept for calling with no parameters, which is just a shortcut forep.require();ep.resolve();.

    Apps currently invokingep.load(require=False) should instead do thefollowing if wanting to avoid the deprecating warning:

    getattr(ep,"resolve",lambda:ep.load(require=False))()

11.2

05 Jan 2015

  • Pip #2326: Report deprecation warning at stacklevel 2 for easier diagnosis.

11.1

04 Jan 2015

  • Issue #281: Since Setuptools 6.1 (Issue #268), a ValueError would be raisedin certain cases where VersionConflict was raised with two arguments, whichoccurred inpkg_resources.WorkingSet.find. This release adds supportfor indicating the dependent packages while maintaining support fora VersionConflict when no dependent package context is known. New unit testsnow capture the expected interface.

11.0

02 Jan 2015

10.2.1

02 Jan 2015

  • Issue #323: Fix regression in entry point name parsing.

10.2

02 Jan 2015

  • Deprecated use of EntryPoint.load(require=False). Passing a boolean to afunction to select behavior is an anti-pattern. Instead useEntrypoint._load().

  • Substantial refactoring of all unit tests. Tests are now much leaner andre-use a lot of fixtures and contexts for better clarity of purpose.

10.1

31 Dec 2014

  • Issue #320: Added a compatibility implementation ofsdist._default_revctrlso that systems relying on that interface do not fail (namely, Ubuntu 12.04and similar Debian releases).

10.0.1

30 Dec 2014

  • Issue #319: Fixed issue installing pure distutils packages.

10.0

30 Dec 2014

  • Issue #313: Removed built-in support for subversion. Projects wishing toretain support for subversion will need to use a third party library. Theextant implementation is being ported tosetuptools_svn.

  • Issue #315: Updated setuptools to hide its own loaded modules duringinstallation of another package. This change will enable setuptools toupgrade (or downgrade) itself even when its own metadata and implementationchange.

9.1

29 Dec 2014

9.0.1

29 Dec 2014

  • Issue #312: Restored presence of pkg_resources API tests (doctest) to sdist.

9.0

28 Dec 2014

  • Issue #314: Disabled support forsetup_requires metadata to avoid issuewhere Setuptools was unable to upgrade over earlier versions.

8.4

26 Dec 2014

8.3

24 Dec 2014

  • Issue #311: Decoupled pkg_resources from setuptools once again.pkg_resources is now a package instead of a module.

8.2.1

18 Dec 2014

  • Issue #306: Suppress warnings about Version format except in select scenarios(such as installation).

8.2

18 Dec 2014

8.1

18 Dec 2014

  • Upgradepackaging to 14.5, giving preference to “rc” as designator forrelease candidates over “c”.

  • PEP-440 warnings are now raised as their own class,pkg_resources.PEP440Warning, instead of RuntimeWarning.

  • Disabled warnings on empty versions.

8.0.4

15 Dec 2014

  • Upgradepackaging to 14.4, fixing an error where there is adifferent result for if 2.0.5 is contained within >2.0dev and >2.0.dev eventhough normalization rules should have made them equal.

  • Issue #296: Add warning when a version is parsed as legacy. This warning willmake it easier for developers to recognize deprecated version numbers.

8.0.3

15 Dec 2014

  • Issue #296: Restored support for__hash__ on parse_version results.

8.0.2

14 Dec 2014

  • Issue #296: Restored support for__getitem__ and sort operations onparse_version result.

8.0.1

13 Dec 2014

  • Issue #296: Restore support for iteration over parse_version result, butdeprecated that usage with a warning. Fixes failure with buildout.

8.0

13 Dec 2014

  • ImplementPEP 440 withinpkg_resources and setuptools. This changedeprecates some version numbers such that they will no longer be installablewithout using the=== escape hatch. Seethe changes to test_resourcesfor specific examples of version numbers and specifiers that are no longersupported. Setuptools now “vendors” thepackaging library.

7.0

19 Oct 2014

  • Issue #80,Issue #209: Eggs that are downloaded forsetup_requires,test_requires, etc. are now placed in a./.eggs directory instead ofdirectly in the current directory. This choice of location means the filescan be readily managed (removed, ignored). Additionally,later phases or invocations of setuptools will not detect the package asalready installed and ignore it for permanent install (See#209).

    This change is indicated as backward-incompatible as installations thatdepend on the installation in the current directory will need to account forthe new location. Systems that ignore*.egg will probably need to beadapted to ignore.eggs. The files will need to be manually moved orwill be retrieved again. Most use cases will require no attention.

6.1

11 Oct 2014

  • Issue #268: When resolving package versions, a VersionConflict now reportswhich package previously required the conflicting version.

6.0.2

29 Sep 2014

  • Issue #262: Fixed regression in pip install due to egg-info directoriesbeing omitted. Re-opensIssue #118.

6.0.1

27 Sep 2014

  • Issue #259: Fixed regression with namespace package handling onsingleversion,externallymanaged installs.

6.0

27 Sep 2014

  • Issue #100: When building a distribution, Setuptools will no longer matchdefault files using platform-dependent case sensitivity, but rather willonly match the files if their case matches exactly. As a result, on Windowsand other case-insensitive file systems, files with names such as‘readme.txt’ or ‘README.TXT’ will be omitted from the distribution and awarning will be issued indicating that ‘README.txt’ was not found. Otherfilenames affected are:

    • README.rst

    • README

    • setup.cfg

    • setup.py (or the script name)

    • test/test*.py

    Any users producing distributions with filenames that match those abovecase-insensitively, but not case-sensitively, should rename those files intheir repository for better portability.

  • BB Pull Request #72: When usingsingle_version_externally_managed, theexclusion list now includes Python 3.2__pycache__ entries.

  • BB Pull Request #76 andBB Pull Request #78: lines in top_level.txt are nowordered deterministically.

  • Issue #118: The egg-info directory is now no longer included in the listof outputs.

  • Issue #258: Setuptools now patches distutils msvc9compiler torecognize the specially-packaged compiler package for easy extension modulesupport on Python 2.6, 2.7, and 3.2.

5.8

18 Sep 2014

  • Issue #237:pkg_resources now uses explicit detection of Python 2 vs.Python 3, supporting environments where builtins have been patched to makePython 3 look more like Python 2.

5.7

15 Aug 2014

  • Issue #240: Based on real-world performance measures against 5.4, zipmanifests are now cached in all circumstances. ThePKG_RESOURCES_CACHE_ZIP_MANIFESTS environment variable is no longerrelevant. The observed “memory increase” referenced in the 5.4 releasenotes and detailed inIssue #154 was likely not an increase over the statusquo, but rather only an increase over not storing the zip info at all.

5.6

14 Aug 2014

  • Issue #242: Use absolute imports in svn_utils to avoid issues if theinstalling package adds an xml module to the path.

5.5.1

10 Aug 2014

  • Issue #239: Fix typo in 5.5 such that fix did not take.

5.5

10 Aug 2014

  • Issue #239: Setuptools now includes the setup_requires directive onDistribution objects and validates the syntax just like install_requiresand tests_require directives.

5.4.2

01 Aug 2014

  • Issue #236: Corrected regression in execfile implementation for Python 2.6.

5.4.1

06 Jul 2014

  • Python #7776: (ssl_support) Correct usage of host for validation whentunneling for HTTPS.

5.4

05 Jul 2014

  • Issue #154:pkg_resources will now cache the zip manifests rather thanre-processing the same file from disk multiple times, but only if theenvironment variablePKG_RESOURCES_CACHE_ZIP_MANIFESTS is set. Clientsthat package many modules in the same zip file will see some improvementin startup time by enabling this feature. This feature is not enabled bydefault because it causes a substantial increase in memory usage.

5.3

28 Jun 2014

  • Issue #185: Make svn tagging work on the new style SVN metadata.Thanks cazabon!

  • Prune revision control directories (e.g .svn) from base pathas well as sub-directories.

5.2

22 Jun 2014

  • Added aDeveloper Guide to the officialdocumentation.

  • Some code refactoring and cleanup was done with no intended behavioralchanges.

  • During install_egg_info, the generated lines for namespace package .pthfiles are now processed even during a dry run.

5.1

15 Jun 2014

  • Issue #202: Implemented more robust cache invalidation for the ZipImporter,building on the work inIssue #168. Special thanks to Jurko Gospodnetic andPJE.

5.0.2

15 Jun 2014

5.0.1

14 Jun 2014

  • Renamed script templates to end with .tmpl now that they no longer needto be processed by 2to3. Fixes spurious syntax errors during build/install.

5.0

14 Jun 2014

  • Issue #218: Re-release of 3.8.1 to signal that it supersedes 4.x.

  • Incidentally, script templates were updated not to include the triple-quoteescaping.

3.7.1 and 3.8.1 and 4.0.1

  • Issue #213: Use legacy StringIO behavior for compatibility under pbr.

  • Issue #218: Setuptools 3.8.1 superseded 4.0.1, and 4.x was removedfrom the available versions to install.

4.0

  • Issue #210:setup.pydevelop now copies scripts in binary mode ratherthan text mode, matching the behavior of theinstall command.

3.8

01 Jun 2014

  • ExtendIssue #197 workaround to include all Python 3 versions prior to3.2.2.

3.7

28 May 2014

  • Issue #193: Improved handling of Unicode filenames when building manifests.

3.6

07 May 2014

  • Issue #203: Honor proxy settings for Powershell downloader in the bootstraproutine.

3.5.2

07 May 2014

  • Issue #168: More robust handling of replaced zip files and stale caches.Fixes ZipImportError complaining about a ‘bad local header’.

3.5.1

04 May 2014

  • Issue #199: Restoredinstall._install for compatibility with earlierNumPy versions.

3.5

03 May 2014

  • Issue #195: Follow symbolic links in find_packages (restoring behaviorbroken in 3.4).

  • Issue #197: On Python 3.1, PKG-INFO is now saved in a UTF-8 encoding insteadofsys.getpreferredencoding to match the behavior on Python 2.6-3.4.

  • Issue #192: Preferred bootstrap location is nowhttps://bootstrap.pypa.io/ez_setup.py (mirrored from former location).

3.4.4

11 Apr 2014

  • Issue #184: Correct failure where find_package over-matched packageswhen directory traversal isn’t short-circuited.

3.4.3

07 Apr 2014

  • Issue #183: Really fix test command with Python 3.1.

3.4.2

06 Apr 2014

  • Issue #183: Fix additional regression in test command on Python 3.1.

3.4.1

30 Mar 2014

  • Issue #180: Fix regression in test command not caught by py.test-run tests.

3.4

30 Mar 2014

  • Issue #176: Add parameter to the test command to support a custom testrunner: –test-runner or -r.

  • Issue #177: Now assume most common invocation to install command onplatforms/environments without stack support (issuing a warning). Setuptoolsnow installs naturally on IronPython. Behavior on CPython should beunchanged.

3.3

16 Mar 2014

  • Addinclude parameter tosetuptools.find_packages().

3.2

14 Mar 2014

3.1

08 Mar 2014

  • Issue #161: Restore Features functionality to allow backward compatibility(for Features) until the uses of that functionality is sufficiently removed.

3.0.2

06 Mar 2014

  • Correct typo in previous bugfix.

3.0.1

06 Mar 2014

  • Issue #157: Restore support for Python 2.6 in bootstrap script wherezipfile.ZipFile does not yet have support for context managers.

3.0

04 Mar 2014

  • Issue #125: Prevent Subversion support from creating a ~/.subversiondirectory just for checking the presence of a Subversion repository.

  • Issue #12: Namespace packages are now imported lazily. That is, the meredeclaration of a namespace package in an egg onsys.path no longercauses it to be imported whenpkg_resources is imported. Note that thischange means that all of a namespace package’s__init__.py files mustinclude adeclare_namespace() call in order to ensure that they will behandled properly at runtime. In 2.x it was possible to get away withoutincluding the declaration, but only at the cost of forcing namespacepackages to be imported early, which 3.0 no longer does.

  • Issue #148: When building (bdist_egg), setuptools no longer adds__init__.py files to namespace packages. Any packages that rely on thisbehavior will need to create__init__.py files and include thedeclare_namespace().

  • Issue #7: Setuptools itself is now distributed as a zip archive in addition totar archive. ez_setup.py now uses zip archive. This approach avoids the potentialsecurity vulnerabilities presented by use of tar archives in ez_setup.py.It also leverages the security features added to ZipFile.extract in Python 2.7.4.

  • Issue #65: Removed deprecated Features functionality.

  • BB Pull Request #28: Remove backport of_bytecode_filenames which isavailable in Python 2.6 and later, but also has better compatibility withPython 3 environments.

  • Issue #156: Fix spelling of __PYVENV_LAUNCHER__ variable.

2.2

07 Feb 2014

  • Issue #141: Restored fix for allowing setup_requires dependencies tooverride installed dependencies during setup.

  • Issue #128: Fixed issue where only the first dependency link was honoredin a distribution where multiple dependency links were supplied.

2.1.2

05 Feb 2014

  • Issue #144: Read long_description using codecs module to avoid errorsinstalling on systems where LANG=C.

2.1.1

05 Feb 2014

  • Issue #139: Fix regression in re_finder for CVS repos (and maybe Git reposas well).

2.1

07 Jan 2014

  • Issue #129: Suppress inspection of*.whl files when searching for filesin a zip-imported file.

  • Issue #131: Fix RuntimeError when constructing an egg fetcher.

2.0.2

29 Dec 2013

  • Fix NameError during installation with Python implementations (e.g. Jython)not containing parser module.

  • Fix NameError insdist:re_finder.

2.0.1

15 Dec 2013

  • Issue #124: Fixed error in list detection in upload_docs.

2.0

07 Dec 2013

  • Issue #121: Exempt lib2to3 pickled grammars from DirectorySandbox.

  • Issue #41: Dropped support for Python 2.4 and Python 2.5. Clients requiringsetuptools for those versions of Python should use setuptools 1.x.

  • Removedsetuptools.command.easy_install.HAS_USER_SITE. Clientsexpecting this boolean variable should usesite.ENABLE_USER_SITEinstead.

  • Removedpkg_resources.ImpWrapper. Clients that expected this classshould usepkgutil.ImpImporter instead.

1.4.2

01 Dec 2013

  • Issue #116: Correct TypeError when reading a local package index on Python3.

1.4.1

23 Nov 2013

  • Issue #114: Usesys.getfilesystemencoding for decoding config inbdist_wininst distributions.

  • Issue #105 andIssue #113: Establish a more robust technique fordetermining the terminal encoding:

    1. Try ``getpreferredencoding``2. If that returns US_ASCII or None, try the encoding from   ``getdefaultlocale``. If that encoding was a "fallback" because Python   could not figure it out from the environment or OS, encoding remains   unresolved.3. If the encoding is resolved, then make sure Python actually implements   the encoding.4. On the event of an error or unknown codec, revert to fallbacks   (UTF-8 on Darwin, ASCII on everything else).5. On the encoding is 'mac-roman' on Darwin, use UTF-8 as 'mac-roman' was   a bug on older Python releases.On a side note, it would seem that the encoding only matters for when SVNdoes not yet support ``--xml`` and when getting repository and svn versionnumbers. The ``--xml`` technique should yield UTF-8 according to somemessages on the SVN mailing lists. So if the version numbers are always7-bit ASCII clean, it may be best to only support the file parsing methodsfor legacy SVN releases and support for SVN without the subprocess commandwould simple go away as support for the older SVNs does.

1.4

17 Nov 2013

  • Issue #27:easy_install will now use credentials from .pypirc ifpresent for connecting to the package index.

  • BB Pull Request #21: Omit unwanted newlines inpackage_index._encode_authwhen the username/password pair length indicates wrapping.

1.3.2

09 Nov 2013

  • Issue #99: Fix filename encoding issues in SVN support.

1.3.1

07 Nov 2013

  • Remove exuberant warning in SVN support when SVN is not used.

1.3

03 Nov 2013

  • Address security vulnerability in SSL match_hostname check as reported inPython #17997.

  • Preferbackports.ssl_match_hostname for backportimplementation if present.

  • Correct NameError inssl_support module (socket.error).

1.2

02 Nov 2013

  • Issue #26: Add support for SVN 1.7. Special thanks to Philip Thiem for thecontribution.

  • Issue #93: Wheels are now distributed with every release. Note that asreported inIssue #108, as of Pip 1.4, scripts aren’t installed properlyfrom wheels. Therefore, if using Pip to install setuptools from a wheel,theeasy_install command will not be available.

  • Setuptools “natural” launcher support, introduced in 1.0, is now officiallysupported.

1.1.7

11 Apr 2013

  • Fixed behavior of NameError handling in ‘script template (dev).py’ (scriptlauncher for ‘develop’ installs).

  • ez_setup.py now ensures partial downloads are cleaned up followinga failed download.

  • Distribute #363 andIssue #55: Skip an sdist test that fails on localesother than UTF-8.

1.1.6

18 Sep 2013

  • Distribute #349:sandbox.execfile now opens the target file in binarymode, thus honoring a BOM in the file when compiled.

1.1.5

12 Sep 2013

  • Issue #69: Second attempt at fix (logic was reversed).

1.1.4

07 Sep 2013

  • Issue #77: Fix error in upload command (Python 2.4).

1.1.3

06 Sep 2013

  • Fix NameError in previous patch.

1.1.2

06 Sep 2013

  • Issue #69: Correct issue where 404 errors are returned for URLs withfragments in them (such as #egg=).

1.1.1

03 Sep 2013

  • Issue #75: Add--insecure option to ez_setup.py to accommodateenvironments where a trusted SSL connection cannot be validated.

  • Issue #76: Fix AttributeError in upload command with Python 2.4.

1.1

26 Aug 2013

  • Issue #71 (Distribute #333): EasyInstall now puts less emphasis on thecondition when a host is blocked via--allow-hosts.

  • Issue #72: Restored Python 2.4 compatibility inez_setup.py.

1.0

17 Aug 2013

  • Issue #60: On Windows, Setuptools supports deferring to another launcher,such as Vinay Sajip’spylauncher(included with Python 3.3) to launch console and GUI scripts and not installits own launcher executables. This experimental functionality is currentlyonly enabled if theSETUPTOOLS_LAUNCHER environment variable is set to“natural”. In the future, this behavior may become default, but only afterit has matured and seen substantial adoption. TheSETUPTOOLS_LAUNCHERalso accepts “executable” to force the default behavior of creating launcherexecutables.

  • Issue #63: Bootstrap script (ez_setup.py) now prefers Powershell, curl, orwget for retrieving the Setuptools tarball for improved security of theinstall. The script will still fall back to a simpleurlopen onplatforms that do not have these tools.

  • Issue #65: Deprecated theFeatures functionality.

  • Issue #52: InVerifyingHTTPSConn, handle a tunnelled (proxied)connection.

Backward-Incompatible Changes

This release includes a couple of backward-incompatible changes, but most ifnot all users will find 1.0 a drop-in replacement for 0.9.

  • Issue #50: Normalized API of environment marker support. Specifically,removed line number and filename from SyntaxErrors when returned frompkg_resources.invalid_marker. Any clients depending on the specificstring representation of exceptions returned by that function may need tobe updated to account for this change.

  • Issue #50: SyntaxErrors generated bypkg_resources.invalid_marker arenormalized for cross-implementation consistency.

  • Removed--ignore-conflicts-at-my-risk and--delete-conflictingoptions to easy_install. These options have been deprecated since 0.6a11.

0.9.8

25 Jul 2013

  • Issue #53: Fix NameErrors in_vcs_split_rev_from_url.

0.9.7

22 Jul 2013

  • Issue #49: Correct AttributeError on PyPy where a hashlib.HASH object doesnot have a.name attribute.

  • Issue #34: Documentation now refers to bootstrap script in code repositoryreferenced by bookmark.

  • Add underscore-separated keys to environment markers (markerlib).

0.9.6

17 Jul 2013

  • Issue #44: Test failure on Python 2.4 when MD5 hash doesn’t have a.nameattribute.

0.9.5

15 Jul 2013

  • Python #17980: Fix security vulnerability in SSL certificate validation.

0.9.4

15 Jul 2013

  • Issue #43: Fix issue (introduced in 0.9.1) with version resolution whenupgrading over other releases of Setuptools.

0.9.3

15 Jul 2013

  • Issue #42: Fix newAttributeError introduced in last fix.

0.9.2

15 Jul 2013

  • Issue #42: Fix regression where blank checksums would trigger anAttributeError.

0.9.1

13 Jul 2013

  • Distribute #386: Allow other positional and keyword arguments to os.open.

  • Corrected dependency on certifi mis-referenced in 0.9.

0.9

13 Jul 2013

  • package_index now validates hashes other than MD5 in download links.

0.8

05 Jul 2013

  • Code base now runs on Python 2.4 - Python 3.3 without Python 2to3conversion.

0.7.8

04 Jul 2013

0.7.7

02 Jul 2013

0.7.6

02 Jul 2013

0.7.5

29 Jun 2013

  • Issue #21: Restore Python 2.4 compatibility intest_easy_install.

  • Distribute #375: Merged additional warning from Distribute 0.6.46.

  • Now honor the environment variableSETUPTOOLS_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT in addition to the nowdeprecatedDISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT.

0.7.4

19 Jun 2013

  • Issue #20: Fix comparison of parsed SVN version on Python 3.

0.7.3

18 Jun 2013

  • Issue #1: Disable installation of Windows-specific files on non-Windows systems.

  • Use new sysconfig module with Python 2.7 or >=3.2.

0.7.2

09 Jun 2013

  • Issue #14: Use markerlib when theparser module is not available.

  • Issue #10:ez_setup.py now uses HTTPS to download setuptools from PyPI.

0.7.1

03 Jun 2013

  • Fix NameError (Issue #3) again - broken in bad merge.

0.7

02 Jun 2013

  • Merged Setuptools and Distribute. See docs/merge.txt for details.

Added several features that were slated for setuptools 0.6c12:

  • Index URL now defaults to HTTPS.

  • Added experimental environment marker support. Now clients may designate aPEP-426 environment marker for “extra” dependencies. Setuptools uses thisfeature insetup.py for optional SSL and certificate validation supporton older platforms. Based on Distutils-SIG discussions, the syntax issomewhat tentative. There should probably be a PEP with a firmer spec beforethe feature should be considered suitable for use.

  • Added support for SSL certificate validation when installing packages froman HTTPS service.

0.7b4

  • Issue #3: Fixed NameError in SSL support.

0.6.49

04 Jul 2013

  • Move warning check inget_cache_path to follow the directory creationto avoid errors when the cache path does not yet exist. Fixes the errorreported inDistribute #375.

0.6.48

02 Jul 2013

  • Correct AttributeError inResourceManager.get_cache_path introduced in0.6.46 (redo).

0.6.47

02 Jul 2013

  • Correct AttributeError inResourceManager.get_cache_path introduced in0.6.46.

0.6.46

29 Jun 2013

  • Distribute #375: Issue a warning if the PYTHON_EGG_CACHE or otherwisecustomized egg cache location specifies a directory that’s group- orworld-writable.

0.6.45

29 May 2013

  • Distribute #379:distribute_setup.py now traps VersionConflict as well,restoring ability to upgrade from an older setuptools version.

0.6.44

28 May 2013

  • distribute_setup.py has been updated to allow Setuptools 0.7 tosatisfy use_setuptools.

0.6.43

24 May 2013

  • Distribute #378: Restore support for Python 2.4 Syntax (regression in 0.6.42).

0.6.42

24 May 2013

  • External links finder no longer yields duplicate links.

  • Distribute #337: Moved site.py to setuptools/site-patch.py (graft of very oldpatch from setuptools trunk which inspiredPR #31).

0.6.41

24 May 2013

  • Distribute #27: Use public api for loading resources from zip files rather thanthe private method_zip_directory_cache.

  • Added a new functioneasy_install.get_win_launcher which may be used bythird-party libraries such as buildout to get a suitable script launcher.

0.6.40

14 May 2013

  • Distribute #376: brought back cli.exe and gui.exe that were deleted in theprevious release.

0.6.39

12 May 2013

  • Add support for console launchers on ARM platforms.

  • Fix possible issue in GUI launchers where the subsystem was not supplied tothe linker.

  • Launcher build script now refactored for robustness.

  • Distribute #375: Resources extracted from a zip egg to the file system now alsocheck the contents of the file against the zip contents during eachinvocation of get_resource_filename.

0.6.38

05 May 2013

0.6.37

04 May 2013

  • Distribute #143: Launcher scripts, including easy_install itself, are nowaccompanied by a manifest on 32-bit Windows environments to avoid theInstaller Detection Technology and thus undesirable UAC elevation describedinthis Microsoft article.

0.6.36

05 Apr 2013

  • BB Pull Request #35: InBuildout #64, it was reported thatunder Python 3, installation of distutils scripts could attempt to copythe__pycache__ directory as a file, causing an error, apparently onlyunder Windows. Easy_install now skips all directories when processingmetadata scripts.

0.6.35

16 Feb 2013

Note this release is backward-incompatible with distribute 0.6.23-0.6.34 inhow it parses version numbers.

  • Distribute #278: Restored compatibility with distribute 0.6.22 and setuptools0.6. Updated the documentation to match more closely with the versionparsing as intended in setuptools 0.6.

0.6.34

30 Dec 2012

0.6.33

29 Dec 2012

  • Fix 2 errors with Jython 2.5.

  • Fix 1 failure with Jython 2.5 and 2.7.

  • Disable workaround for Jython scripts on Linux systems.

  • Distribute #336:setup.py no longer masks failure exit code when tests fail.

  • Fix issue in pkg_resources where try/except around a platform-dependentimport would trigger hook load failures on Mercurial. See pull request 32for details.

  • Distribute #341: Fix a ResourceWarning.

0.6.32

26 Nov 2012

  • Fix test suite with Python 2.6.

  • Fix some DeprecationWarnings and ResourceWarnings.

  • Distribute #335: Backed outsetup_requires superseding installed requirementsuntil regression can be addressed.

0.6.31

24 Nov 2012

  • Distribute #303: Make sure the manifest only ever contains UTF-8 in Python 3.

  • Distribute #329: Properly close files created by tests for compatibility withJython.

  • Work aroundJython #1980 andJython #1981.

  • Distribute #334: Provide workaround for packages that referencesys.__stdout__such as numpy does. This change should addresspypa/virtualenv#359 as longas the system encoding is UTF-8 or the IO encoding is specified in theenvironment, i.e.:

    PYTHONIOENCODING=utf8pipinstallnumpy
  • Fix for encoding issue when installing from Windows executable on Python 3.

  • Distribute #323: Allowsetup_requires requirements to supersede installedrequirements. Added some new keyword arguments to existing pkg_resourcesmethods. Also had to updated how __path__ is handled for namespace packagesto ensure that when a new egg distribution containing a namespace package isplaced on sys.path, the entries in __path__ are found in the same order theywould have been in had that egg been on the path when pkg_resources wasfirst imported.

0.6.30

22 Oct 2012

  • Distribute #328: Clean up temporary directories in distribute_setup.py.

  • Fix fatal bug in distribute_setup.py.

0.6.29

21 Oct 2012

  • BB Pull Request #14: Honor file permissions in zip files.

  • Distribute #327: Merged pull request#24 to fix a dependency problem with pip.

  • Merged pull request#23 to fixpypa/virtualenv#301.

  • If Sphinx is installed, theupload_docs command now runsbuild_sphinxto produce uploadable documentation.

  • Distribute #326:upload_docs provided mangled auth credentials under Python 3.

  • Distribute #320: Fix check for “creatable” in distribute_setup.py.

  • Distribute #305: Remove a warning that was triggered during normal operations.

  • Distribute #311: Print metadata in UTF-8 independent of platform.

  • Distribute #303: Read manifest file with UTF-8 encoding under Python 3.

  • Distribute #301: Allow to run tests of namespace packages when using 2to3.

  • Distribute #304: Prevent import loop in site.py under Python 3.3.

  • Distribute #283: Re-enable scanning of*.pyc /*.pyo files on Python 3.3.

  • Distribute #299: The develop command didn’t work on Python 3, when using 2to3,as the egg link would go to the Python 2 source. Linking to the 2to3’d codein build/lib makes it work, although you will have to rebuild the modulebefore testing it.

  • Distribute #306: Even if 2to3 is used, we build in-place under Python 2.

  • Distribute #307: Prints the full path when .svn/entries is broken.

  • Distribute #313: Support for sdist subcommands (Python 2.7)

  • Distribute #314: test_local_index() would fail an OS X.

  • Distribute #310: Non-ascii characters in a namespace __init__.py causes errors.

  • Distribute #218: Improved documentation on behavior ofpackage_data andinclude_package_data. Files indicated bypackage_data are now includedin the manifest.

  • distribute_setup.py now allows a--download-base argument for retrievingdistribute from a specified location.

0.6.28

22 Jul 2012

  • Distribute #294: setup.py can now be invoked from any directory.

  • Scripts are now installed honoring the umask.

  • Added support for .dist-info directories.

  • Distribute #283: Fix and disable scanning of*.pyc /*.pyo files onPython 3.3.

0.6.27

18 May 2012

  • Support current snapshots of CPython 3.3.

  • Distribute now recognizes README.rst as a standard, default readme file.

  • Exclude ‘encodings’ modules when removing modules from sys.modules.Workaround for#285.

  • Distribute #231: Don’t fiddle with system python when used with buildout(bootstrap.py)

0.6.26

08 Apr 2012

  • Distribute #183: Symlinked files are now extracted from source distributions.

  • Distribute #227: Easy_install fetch parameters are now passed during theinstallation of a source distribution; now fulfillment of setup_requiresdependencies will honor the parameters passed to easy_install.

0.6.25

08 Feb 2012

  • Distribute #258: Workaround a cache issue

  • Distribute #260: distribute_setup.py now accepts the –user parameter forPython 2.6 and later.

  • Distribute #262: package_index.open_with_auth no longer throws LookupErroron Python 3.

  • Distribute #269: AttributeError when an exception occurs reading Manifest.inon late releases of Python.

  • Distribute #272: Prevent TypeError when namespace package names are unicodeand single-install-externally-managed is used. Also fixes PIP issue449.

  • Distribute #273: Legacy script launchers now install with Python2/3 support.

0.6.24

14 Oct 2011

0.6.23

22 Sep 2011

0.6.21

20 Aug 2011

0.6.20

18 Aug 2011

0.6.19

02 Jun 2011

  • Distribute #206: AttributeError: ‘HTTPMessage’ object has no attribute ‘getheaders’

0.6.18

01 Jun 2011

0.6.17

30 May 2011

  • Support ‘DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT’ environmentvariable to allow to disable installation of easy_install-${version} script.

  • Support Python >=3.1.4 and >=3.2.1.

  • Distribute #204: Don’t try to import the parent of a namespace package indeclare_namespace

  • Distribute #196: Tolerate responses with multiple Content-Length headers

  • Distribute #205: Sandboxing doesn’t preserve working_set. Leads to setup_requiresproblems.

0.6.16

28 Apr 2011

0.6.15

12 Mar 2011

  • Fixed typo in bdist_egg

  • Several issues under Python 3 has been solved.

  • Distribute #146: Fixed missing DLL files after easy_install of windows exe package.

0.6.14

15 Jul 2010

0.6.13

31 May 2010

  • Distribute #160: 2.7 gives ValueError(“Invalid IPv6 URL”)

  • Distribute #150: Fixed using ~/.local even in a –no-site-packages virtualenv

  • Distribute #163: scan index links before external links, and don’t use the md5 whencomparing two distributions

0.6.12

06 May 2010

0.6.11

06 May 2010

0.6.10

12 Dec 2009

  • Reverted change made for the DistributionNotFound exception becausezc.buildout uses the exception message to get the name of thedistribution.

0.6.9

12 Dec 2009

  • Distribute #90: unknown setuptools version can be added in the working set

  • Distribute #87: setupt.py doesn’t try to convert distribute_setup.py anymoreInitial Patch by arfrever.

  • Distribute #89: added a side bar with a download link to the doc.

  • Distribute #86: fixed missing sentence in pkg_resources doc.

  • Added a nicer error message when a DistributionNotFound is raised.

  • Distribute #80: test_develop now works with Python 3.1

  • Distribute #93: upload_docs now works if there is an empty sub-directory.

  • Distribute #70: exec bit on non-exec files

  • Distribute #99: now the standalone easy_install command doesn’t uses a“setup.cfg” if any exists in the working directory. It will use itonly if triggered byinstall_requires from a setup.py call(install, develop, etc).

  • Distribute #101: Allowingos.devnull in Sandbox

  • Distribute #92: Fixed the “no eggs” found error with MacPort(platform.mac_ver() fails)

  • Distribute #103: test_get_script_header_jython_workaround not runanymore under py3 with C or POSIX local. Contributed by Arfrever.

  • Distribute #104: removed the assertion when the installation fails,with a nicer message for the end user.

  • Distribute #100: making sure there’s no SandboxViolation whenthe setup script patches setuptools.

0.6.8

01 Nov 2009

  • Added “check_packages” in dist. (added in Setuptools 0.6c11)

  • Fixed the DONT_PATCH_SETUPTOOLS state.

0.6.7

01 Nov 2009

  • Distribute #58: Added –user support to the develop command

  • Distribute #11: Generated scripts now wrap their call to the script entry pointin the standard “if name == ‘main’”

  • Added the ‘DONT_PATCH_SETUPTOOLS’ environment variable, so virtualenvcan drive an installation that doesn’t patch a global setuptools.

  • Reviewed unladen-swallow specific change fromhttp://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719and determined that it no longer applies. Distribute should work fine withUnladen Swallow 2009Q3.

  • Distribute #21: Allow PackageIndex.open_url to gracefully handle all cases of ahttplib.HTTPException instead of just InvalidURL and BadStatusLine.

  • Removed virtual-python.py from this distribution and updated documentationto point to the actively maintained virtualenv instead.

  • Distribute #64: use_setuptools no longer rebuilds the distribute egg everytime it is run

  • use_setuptools now properly respects the requested version

  • use_setuptools will no longer try to import a distribute egg for thewrong Python version

  • Distribute #74: no_fake should be True by default.

  • Distribute #72: avoid a bootstrapping issue with easy_install -U

0.6.6

15 Oct 2009

  • Unified the bootstrap file so it works on both py2.x and py3k without 2to3(patch by Holger Krekel)

0.6.5

15 Oct 2009

  • Distribute #65: cli.exe and gui.exe are now generated at build time,depending on the platform in use.

  • Distribute #67: Fixed doc typo (PEP 381/PEP 382).

  • Distribute no longer shadows setuptools if we require a 0.7-seriessetuptools. And an error is raised when installing a 0.7 setuptools withdistribute.

  • When run from within buildout, no attempt is made to modify an existingsetuptools egg, whether in a shared egg directory or a system setuptools.

  • Fixed a hole in sandboxing allowing builtin file to write outside ofthe sandbox.

0.6.4

10 Oct 2009

  • Added the generation ofdistribute_setup_3k.py during the release.This closesDistribute #52.

  • Added an upload_docs command to easily upload project documentation toPyPI’shttps://pythonhosted.org. This close issueDistribute #56.

  • Fixed a bootstrap bug on the use_setuptools() API.

0.6.3

27 Sep 2009

setuptools

  • Fixed a bunch of calls to file() that caused crashes on Python 3.

bootstrapping

  • Fixed a bug in sorting that caused bootstrap to fail on Python 3.

0.6.2

26 Sep 2009

setuptools

bootstrapping

0.6.1

08 Sep 2009

setuptools

  • package_index.urlopen now catches BadStatusLine and malformed url errors.This closesDistribute #16 andDistribute #18.

  • zip_ok is now False by default. This closesOld Setuptools #33.

  • Fixed invalid URL error catching.Old Setuptools #20.

  • Fixed invalid bootstrapping with easy_install installation (Distribute #40).Thanks to Florian Schulze for the help.

  • Removed buildout/bootstrap.py. A new repository will create a specificbootstrap.py script.

bootstrapping

  • The bootstrap process leave setuptools alone if detected in the systemand –root or –prefix is provided, but is not in the same location.This closesDistribute #10.

0.6

09 Aug 2009

setuptools

  • Packages required at build time where not fully present at install time.This closesDistribute #12.

  • Protected against failures in tarfile extraction. This closesDistribute #10.

  • Made Jython api_tests.txt doctest compatible. This closesDistribute #7.

  • sandbox.py replaced builtin type file with builtin function open. ThisclosesDistribute #6.

  • Immediately close all file handles. This closesDistribute #3.

  • Added compatibility with Subversion 1.6. This referencesDistribute #1.

pkg_resources

  • Avoid a call to /usr/bin/sw_vers on OSX and use the official platform APIinstead. Based on a patch from ronaldoussoren. This closes issue#5.

  • Fixed a SandboxViolation for mkdir that could occur in certain cases.This closesDistribute #13.

  • Allow to find_on_path on systems with tight permissions to fail gracefully.This closesDistribute #9.

  • Corrected inconsistency between documentation and code of add_entry.This closesDistribute #8.

  • Immediately close all file handles. This closesDistribute #3.

easy_install

0.6c9

  • Fixed a missing files problem when using Windows source distributions onnon-Windows platforms, due to distutils not handling manifest file lineendings correctly.

  • Updated Pyrex support to work with Pyrex 0.9.6 and higher.

  • Minor changes for Jython compatibility, including skipping tests that can’twork on Jython.

  • Fixed not installing eggs ininstall_requires if they were also used forsetup_requires ortests_require.

  • Fixed not fetching eggs ininstall_requires when running tests.

  • Allowez_setup.use_setuptools() to upgrade existing setuptoolsinstallations when called from a standalonesetup.py.

  • Added a warning if a namespace package is declared, but its parent packageis not also declared as a namespace.

  • Support Subversion 1.5

  • Removed use of deprecatedmd5 module ifhashlib is available

  • Fixedbdist_wininstupload trying to upload the.exe twice

  • Fixedbdist_egg putting anative_libs.txt in the source package’s.egg-info, when it should only be in the built egg’sEGG-INFO.

  • Ensure that _full_name is set on all shared libs before extensions arechecked for shared lib usage. (Fixes a bug in the experimental sharedlibrary build support.)

  • Fix to allow unpacked eggs containing native libraries to fail moregracefully under Google App Engine (with anImportError loading theC-based module, instead of getting aNameError).

  • Fixedwin32.exe support for .pth files, so unnecessary directory nestingis flattened out in the resulting egg. (There was a case-sensitivityproblem that affected some distributions, notablypywin32.)

  • Prevent--help-commands and other junk from showing under Python 2.5when runningeasy_install--help.

  • Fixed GUI scripts sometimes not executing on Windows

  • Fixed not picking up dependency links from recursive dependencies.

  • Only make.py,.dll and.so files executable when unpacking eggs

  • Changes for Jython compatibility

  • Improved error message when a requirement is also a directory name, but thespecified directory is not a source package.

  • Fixed--allow-hosts option blockingfile: URLs

  • Fixed HTTP SVN detection failing when the page title included a projectname (e.g. on SourceForge-hosted SVN)

  • Fix Jython script installation to handle#! lines better whensys.executable is a script.

  • Removed use of deprecatedmd5 module ifhashlib is available

  • Keep site directories (e.g.site-packages) from being included in.pth files.

0.6c7

  • Fixeddistutils.filelist.findall() crashing on broken symlinks, andegg_info command failing on new, uncommitted SVN directories.

  • Fix import problems with nested namespace packages installed via--root or--single-version-externally-managed, due to theparent package not having the child package as an attribute.

  • ftp: download URLs now work correctly.

  • The default--index-url is nowhttps://pypi.python.org/simple, to usethe Python Package Index’s new simpler (and faster!) REST API.

0.6c6

  • Added--egg-path option todevelop command, allowing you to force.egg-link files to use relative paths (allowing them to be shared acrossplatforms on a networked drive).

  • Fix not building binary RPMs correctly.

  • Fix “eggsecutables” (such as setuptools’ own egg) only being runnable withbash-compatible shells.

  • Fix#! parsing problems in Windows.exe script wrappers, when therewas whitespace inside a quoted argument or at the end of the#! line(a regression introduced in 0.6c4).

  • Fixtest command possibly failing if an older version of the projectbeing tested was installed onsys.path ahead of the test sourcedirectory.

  • Fixfind_packages() treatingez_setup and directories with. intheir names as packages.

  • EasyInstall no longer aborts the installation process if a URL it wants toretrieve can’t be downloaded, unless the URL is an actual package download.Instead, it issues a warning and tries to keep going.

  • Fixed distutils-style scripts originally built on Windows having their lineendings doubled when installed on any platform.

  • Added--local-snapshots-ok flag, to allow building eggs from projectsinstalled usingsetup.pydevelop.

  • Fixed not HTML-decoding URLs scraped from web pages

0.6c5

  • Fix uploadedbdist_rpm packages being described asbdist_eggpackages under Python versions less than 2.5.

  • Fix uploadedbdist_wininst packages being described as suitable for“any” version by Python 2.5, even if a--target-version was specified.

  • Fixed.dll files on Cygwin not having executable permissions when an eggis installed unzipped.

0.6c4

  • Overhauled Windows script wrapping to supportbdist_wininst better.Scripts installed withbdist_wininst will always use#!python.exe or#!pythonw.exe as the executable name (even when built on non-Windowsplatforms!), and the wrappers will look for the executable in the script’sparent directory (which should find the right version of Python).

  • Fixupload command not uploading files built bybdist_rpm orbdist_wininst under Python 2.3 and 2.4.

  • Add support for “eggsecutable” headers: a#!/bin/sh script that isprepended to an.egg file to allow it to be run as a script on Unix-ishplatforms. (This is mainly so that setuptools itself can have a single-fileinstaller on Unix, without doing multiple downloads, dealing with firewalls,etc.)

  • Fix problem with empty revision numbers in Subversion 1.4entries files

  • Use cross-platform relative paths ineasy-install.pth when doingdevelop and the source directory is a subdirectory of the installationtarget directory.

  • Fix a problem installing eggs with a system packaging tool if the projectcontained an implicit namespace package; for example if thesetup()listed a namespace packagefoo.bar without explicitly listingfooas a namespace package.

  • Added support for HTTP “Basic” authentication usinghttp://user:pass@hostURLs. If a password-protected page contains links to the same host (andprotocol), those links will inherit the credentials used to access theoriginal page.

  • Removed all special support for Sourceforge mirrors, as Sourceforge’smirror system now works well for non-browser downloads.

  • Fixed not recognizingwin32.exe installers that included a custombitmap.

  • Fixed not allowingos.open() of paths outside the sandbox, even if theyare opened read-only (e.g. reading/dev/urandom for random numbers, asis done byos.urandom() on some platforms).

  • Fixed a problem with.pth testing on Windows whensys.executablehas a space in it (e.g., the user installed Python to aProgramFilesdirectory).

0.6c3

  • Fixed breakages caused by Subversion 1.4’s new “working copy” format

  • You can once again use “python -m easy_install” with Python 2.4 and above.

  • Python 2.5 compatibility fixes added.

0.6c2

  • Theez_setup module displays the conflicting version of setuptools (andits installation location) when a script requests a version that’s notavailable.

  • Runningsetup.pydevelop on a setuptools-using project will now installsetuptools if needed, instead of only downloading the egg.

  • Windows script wrappers now support quoted arguments and argumentscontaining spaces. (Patch contributed by Jim Fulton.)

  • Theez_setup.py script now actually works when you put a setuptools.egg alongside it for bootstrapping an offline machine.

  • A writable installation directory onsys.path is no longer required todownload and extract a source distribution using--editable.

  • Generated scripts now use-x on the#! line whensys.executablecontains non-ASCII characters, to prevent deprecation warnings about anunspecified encoding when the script is run.

0.6c1

  • FixedAttributeError when trying to download asetup_requiresdependency when a distribution lacks adependency_links setting.

  • Madezip-safe andnot-zip-safe flag files contain a single byte, soas to play better with packaging tools that complain about zero-lengthfiles.

  • Madesetup.pydevelop respect the--no-deps option, which itpreviously was ignoring.

  • Supportextra_path option tosetup() wheninstall is run inbackward-compatibility mode.

  • Source distributions now always include asetup.cfg file that explicitlysetsegg_info options such that they produce an identical version numberto the source distribution’s version number. (Previously, the defaultversion number could be different due to the use of--tag-date, or ifthe version was overridden on the command line that built the sourcedistribution.)

  • EasyInstall now includes setuptools version information in theUser-Agent string sent to websites it visits.

0.6b4

  • Fixregister not obeying name/version set byegg_info command, ifegg_info wasn’t explicitly run first on the same command line.

  • Added--no-date and--no-svn-revision options toegg_infocommand, to allow suppressing tags configured insetup.cfg.

  • Fixed redundant warnings about missingREADME file(s); it should nowappear only if you are actually a source distribution.

  • Fix creating Python wrappers for non-Python scripts

  • Fixftp:// directory listing URLs from causing a crash when used in the“Home page” or “Download URL” slots on PyPI.

  • Fixsys.path_importer_cache not being updated when an existing zipfileor directory is deleted/overwritten.

  • Fix not recognizing HTML 404 pages from package indexes.

  • Allowfile:// URLs to be used as a package index. URLs that refer todirectories will use an internally-generated directory listing if there isnoindex.html file in the directory.

  • Allow external links in a package index to be specified usingrel="homepage" orrel="download", without needing the oldPyPI-specific visible markup.

  • Suppressed warning message about possibly-misspelled project name, if an eggor link for that project name has already been seen.

0.6b3

  • Fixbdist_egg not including files in subdirectories of.egg-info.

  • Allow.py files found by theinclude_package_data option to beautomatically included. Remove duplicate data file matches if bothinclude_package_data andpackage_data are used to refer to the samefiles.

  • Fix local--find-links eggs not being copied except with--always-copy.

  • Fix sometimes not detecting local packages installed outside of “site”directories.

  • Fix mysterious errors during initialsetuptools install, caused byez_setup trying to runeasy_install twice, due to a code fallthruafter deleting the egg from which it’s running.

0.6b2

  • Don’t install or update asite.py patch when installing to aPYTHONPATH directory with--multi-version, unless aneasy-install.pth file is already in use there.

  • Construct.pth file paths in such a way that installing an egg whosename begins withimport doesn’t cause a syntax error.

  • Fixed a bogus warning message that wasn’t updated since the 0.5 versions.

0.6b1

  • Stripmodule from the end of compiled extension modules when computingthe name of a.py loader/wrapper. (Python’s import machinery ignoresthis suffix when searching for an extension module.)

  • Better ambiguity management: accept#egg name/version even if processingwhat appears to be a correctly-named distutils file, and ignore.eggfiles with no-, since valid Python.egg files always have a versionnumber (but Scheme eggs often don’t).

  • Supportfile:// links to directories in--find-links, so thateasy_install can build packages from local source checkouts.

  • Added automatic retry for Sourceforge mirrors. The new download process isto first just try dl.sourceforge.net, then randomly select mirror IPs andremove ones that fail, until something works. The removed IPs stay removedfor the remainder of the run.

  • Ignore bdist_dumb distributions when looking at download URLs.

0.6a11

  • Addedtest_loader keyword to support custom test loaders

  • Addedsetuptools.file_finders entry point group to allow implementingrevision control plugins.

  • Added--identity option toupload command.

  • Addeddependency_links to allow specifying URLs for--find-links.

  • Enhanced test loader to scan packages as well as modules, and calladditional_tests() if present to get non-unittest tests.

  • Support namespace packages in conjunction with system packagers, by omittingthe installation of any__init__.py files for namespace packages, andadding a special.pth file to create a working package insys.modules.

  • Made--single-version-externally-managed automatic when--root isused, so that most system packagers won’t require special support forsetuptools.

  • Fixedsetup_requires,tests_require, etc. not usingsetup.cfg orother configuration files for their option defaults when installing, andalso made the install use--multi-version mode so that the projectdirectory doesn’t need to support .pth files.

  • MANIFEST.in is now forcibly closed when any errors occur while readingit. Previously, the file could be left open and the actual error would bemasked by problems trying to remove the open file on Windows systems.

  • Processdependency_links.txt if found in a distribution, by adding theURLs to the list for scanning.

  • Use relative paths in.pth files when eggs are being installed to thesame directory as the.pth file. This maximizes portability of thetarget directory when building applications that contain eggs.

  • Addedeasy_install-N.N script(s) for convenience when using multiplePython versions.

  • Added automatic handling of installation conflicts. Eggs are now shifted tothe front of sys.path, in an order consistent with where they came from,making EasyInstall seamlessly co-operate with system package managers.

    The--delete-conflicting and--ignore-conflicts-at-my-risk optionsare now no longer necessary, and will generate warnings at the end of arun if you use them.

  • Don’t recursively traverse subdirectories given to--find-links.

0.6a10

  • Fixed thedevelop command ignoring--find-links.

  • Added exhaustive testing of the install directory, including a spawn testfor.pth file support, and directory writability/existence checks. Thisshould virtually eliminate the need to set or configure--site-dirs.

  • Added--prefix option for more do-what-I-mean-ishness in the absence ofRTFM-ing. :)

  • EnhancedPYTHONPATH support so that you don’t have to put any eggs on itmanually to make it work.--multi-version is no longer a silentdefault; you must explicitly use it if installing to a non-PYTHONPATH,non-“site” directory.

  • Expand$variables used in the--site-dirs,--build-directory,--install-dir, and--script-dir options, whether on the command lineor in configuration files.

  • Improved SourceForge mirror processing to work faster and be less affectedby transient HTML changes made by SourceForge.

  • PyPI searches now use the exact spelling of requirements specified on thecommand line or in a project’sinstall_requires. Previously, anormalized form of the name was used, which could lead to unnecessaryfull-index searches when a project’s name had an underscore (_) in it.

  • EasyInstall can now download bare.py files and wrap them in an egg,as long as you include an#egg=name-version suffix on the URL, or ifthe.py file is listed as the “Download URL” on the project’s PyPI page.This allows third parties to “package” trivial Python modules just bylinking to them (e.g. from within their own PyPI page or download linkspage).

  • The--always-copy option now skips “system” and “development” eggs sincethey can’t be reliably copied. Note that this may cause EasyInstall tochoose an older version of a package than what you expected, or it may causedownloading and installation of a fresh version of what’s already installed.

  • The--find-links option previously scanned all supplied URLs anddirectories as early as possible, but now only directories and directarchive links are scanned immediately. URLs are not retrieved unless apackage search was already going to go online due to a package not beingavailable locally, or due to the use of the--update or-U option.

  • Fixed the annoying--help-commands wart.

0.6a9

  • Thesdist command no longer uses the traditionalMANIFEST file tocreate source distributions.MANIFEST.in is still read and processed,as are the standard defaults and pruning. But the manifest is built insidethe project’s.egg-info directory asSOURCES.txt, and it is rebuiltevery time theegg_info command is run.

  • Added theinclude_package_data keyword tosetup(), allowing you toautomatically include any package data listed in revision control orMANIFEST.in

  • Added theexclude_package_data keyword tosetup(), allowing you totrim back files included via thepackage_data andinclude_package_data options.

  • Fixed--tag-svn-revision not working when run from a sourcedistribution.

  • Added warning for namespace packages with missingdeclare_namespace()

  • Addedtests_require keyword tosetup(), so that e.g. packagesrequiringnose to run unit tests can make this dependency optionalunless thetest command is run.

  • Made all commands that useeasy_install respect its configurationoptions, as this was causing some problems withsetup.pyinstall.

  • Added anunpack_directory() driver tosetuptools.archive_util, sothat you can process a directory tree through a processing filter as if itwere a zipfile or tarfile.

  • Added an internalinstall_egg_info command to use as part of old-styleinstall operations, that installs an.egg-info directory with thepackage.

  • Added a--single-version-externally-managed option to theinstallcommand so that you can more easily wrap a “flat” egg in a system package.

  • Enhancedbdist_rpm so that it installs single-version eggs thatdon’t rely on a.pth file. The--no-egg option has been removed,since all RPMs are now built in a more backwards-compatible format.

  • Support full roundtrip translation of eggs to and frombdist_wininstformat. Runningbdist_wininst on a setuptools-based package wraps theegg in an .exe that will safely install it as an egg (i.e., with metadataand entry-point wrapper scripts), andeasy_install can turn the .exeback into an.egg file or directory and install it as such.

  • Fixed.pth file processing picking up nested eggs (i.e. ones inside“baskets”) when they weren’t explicitly listed in the.pth file.

  • If more than one URL appears to describe the exact same distribution, preferthe shortest one. This helps to avoid “table of contents” CGI URLs like theones on effbot.org.

  • Quote arguments to python.exe (including python’s path) to avoid problemswhen Python (or a script) is installed in a directory whose name containsspaces on Windows.

  • Support full roundtrip translation of eggs to and frombdist_wininstformat. Runningbdist_wininst on a setuptools-based package wraps theegg in an .exe that will safely install it as an egg (i.e., with metadataand entry-point wrapper scripts), andeasy_install can turn the .exeback into an.egg file or directory and install it as such.

0.6a8

  • Fixed some problems building extensions when Pyrex was installed, especiallywith Python 2.4 and/or packages using SWIG.

  • Madedevelop command accept all the same options aseasy_install,and use theeasy_install command’s configuration settings as defaults.

  • Madeegg_info--tag-svn-revision fall back to extracting the revisionnumber fromPKG-INFO in case it is being run on a source distribution ofa snapshot taken from a Subversion-based project.

  • Automatically detect.dll,.so and.dylib files that are beinginstalled as data, adding them tonative_libs.txt automatically.

  • Fixed some problems with fresh checkouts of projects that don’t include.egg-info/PKG-INFO under revision control and put the project’s sourcecode directly in the project directory. If such a package had anyrequirements that get processed before theegg_info command can be run,the setup scripts would fail with a “Missing ‘Version:’ header and/orPKG-INFO file” error, because the egg runtime interpreted the unbuiltmetadata in a directory onsys.path (i.e. the current directory) asbeing a corrupted egg. Setuptools now monkeypatches the distributionmetadata cache to pretend that the egg has valid version information, untilit has a chance to make it actually be so (via theegg_info command).

  • Update for changed SourceForge mirror format

  • Fixed not installing dependencies for some packages fetched via Subversion

  • Fixed dependency installation with--always-copy not using the samedependency resolution procedure as other operations.

  • Fixed not fully removing temporary directories on Windows, if a Subversioncheckout left read-only files behind

  • Fixed some problems building extensions when Pyrex was installed, especiallywith Python 2.4 and/or packages using SWIG.

0.6a7

  • Fixed not being able to install Windows script wrappers using Python 2.3

0.6a6

  • Added support for “traditional” PYTHONPATH-based non-root installation, andalso the convenientvirtual-python.py script, based on a contributionby Ian Bicking. The setuptools egg now contains a hackedsite modulethat makes the PYTHONPATH-based approach work with .pth files, so that youcan get the full EasyInstall feature set on such installations.

  • Added--no-deps and--allow-hosts options.

  • Improved Windows.exe script wrappers so that the script can have thesame name as a module without confusing Python.

  • Changed dependency processing so that it’s breadth-first, allowing adepender’s preferences to override those of a dependee, to prevent conflictswhen a lower version is acceptable to the dependee, but not the depender.Also, ensure that currently installed/selected packages aren’t givenprecedence over ones desired by a package being installed, which couldcause conflict errors.

0.6a5

  • Fixed missing gui/cli .exe files in distribution. Fixed bugs in tests.

0.6a3

  • Addedgui_scripts entry point group to allow installing GUI scriptson Windows and other platforms. (The special handling is only for Windows;other platforms are treated the same as forconsole_scripts.)

  • Improved error message when trying to use old ways of runningeasy_install. Removed the ability to run viapython-m or byrunningeasy_install.py;easy_install is the command to run on allsupported platforms.

  • Improved wrapper script generation and runtime initialization so that aVersionConflict doesn’t occur if you later install a competing version of aneeded package as the default version of that package.

  • Fixed a problem parsing version numbers in#egg= links.

0.6a2

  • Addedconsole_scripts entry point group to allow installing scriptswithout the need to create separate script files. On Windows, consolescripts get an.exe wrapper so you can just type their name. On otherplatforms, the scripts are written without a file extension.

  • EasyInstall can now install “console_scripts” defined by packages that usesetuptools and define appropriate entry points. On Windows, consolescripts get an.exe wrapper so you can just type their name. On otherplatforms, the scripts are installed without a file extension.

  • Usingpython-measy_install or runningeasy_install.py is nowDEPRECATED, since aneasy_install wrapper is now available on allplatforms.

0.6a1

  • Added support for building “old-style” RPMs that don’t install an egg forthe target package, using a--no-egg option.

  • Thebuild_ext command now works better when using the--inplaceoption and multiple Python versions. It now makes sure that all extensionsmatch the current Python version, even if newer copies were built for adifferent Python version.

  • Theupload command no longer attaches an extra.zip when uploadingeggs, as PyPI now supports egg uploads without trickery.

  • Theez_setup script/module now displays a warning before downloadingthe setuptools egg, and attempts to check the downloaded egg against aninternal MD5 checksum table.

  • Fixed the--tag-svn-revision option ofegg_info not finding thelatest revision number; it was using the revision number of the directorycontainingsetup.py, not the highest revision number in the project.

  • Addedeager_resources setup argument

  • Thesdist command now recognizes Subversion “deleted file” entries anddoes not include them in source distributions.

  • setuptools now embeds itself more thoroughly into the distutils, so thatother distutils extensions (e.g. py2exe, py2app) will subclass setuptools’versions of things, rather than the native distutils ones.

  • Addedentry_points andsetup_requires arguments tosetup();setup_requires allows you to automatically find and download packagesthat are needed in order tobuild your project (as opposed to running it).

  • setuptools now finds its commands,setup() argument validators, andmetadata writers using entry points, so that they can be extended bythird-party packages. SeeCreating distutils Extensionsfor more details.

  • The vestigialdepends command has been removed. It was never finishedor documented, and never would have worked without EasyInstall - which itpre-dated and was never compatible with.

  • EasyInstall now does MD5 validation of downloads from PyPI, or from any linkthat has an “#md5=…” trailer with a 32-digit lowercase hex md5 digest.

  • EasyInstall now handles symlinks in target directories by removing the link,rather than attempting to overwrite the link’s destination. This makes iteasier to set up an alternate Python “home” directory (as described inthe Non-Root Installation section of the docs).

  • Added support for handling MacOS platform information in.egg filenames,based on a contribution by Kevin Dangoor. You may wish to delete andreinstall any eggs whose filename includes “darwin” and “Power_Macintosh”,because the format for this platform information has changed so that minorOS X upgrades (such as 10.4.1 to 10.4.2) do not cause eggs built with aprevious OS version to become obsolete.

  • easy_install’s dependency processing algorithms have changed. When using--always-copy, it now ensures that dependencies are copied too. Whennot using--always-copy, it tries to use a single resolution loop,rather than recursing.

  • Fixed installing extra.pyc or.pyo files for scripts with.pyextensions.

  • Added--site-dirs option to allow adding custom “site” directories.Madeeasy-install.pth work in platform-specific alternate sitedirectories (e.g.~/Library/Python/2.x/site-packages on Mac OS X).

  • If you manually delete the current version of a package, the next run ofEasyInstall against the target directory will now remove the stray entryfrom theeasy-install.pth file.

  • EasyInstall now recognizes URLs with a#egg=project_name fragment IDas pointing to the named project’s source checkout. Such URLs have a lowermatch precedence than any other kind of distribution, so they’ll only beused if they have a higher version number than any other availabledistribution, or if you use the--editable option. The#eggfragment can contain a version if it’s formatted as#egg=proj-ver,whereproj is the project name, andver is the version number. Youmust use the format for these values that thebdist_egg command uses;i.e., all non-alphanumeric runs must be condensed to single underscorecharacters.

  • Added the--editable option; see Editing and Viewing Source Packagesin the docs. Also, slightly changed the behavior of the--build-directory option.

  • Fixed the setup script sandbox facility not recognizing certain paths asvalid on case-insensitive platforms.

0.5a12

  • The zip-safety scanner now checks for modules that might be used withpython-m, and marks them as unsafe for zipping, since Python 2.4 can’thandle-m on zipped modules.

  • Fixpython-measy_install not working due to setuptools being installedas a zipfile. Update safety scanner to check for modules that might be usedaspython-m scripts.

  • Misc. fixes for win32.exe support, including changes to support Python 2.4’schangedbdist_wininst format.

0.5a11

  • Fix breakage of the “develop” command that was caused by the addition of--always-unzip to theeasy_install command.

0.5a10

  • Put theeasy_install module back in as a module, as it’s needed forpython-m to run it!

  • Allow--find-links/-f to accept local directories or filenames as wellas URLs.

0.5a9

  • Includesvn:externals directories in source distributions as well asnormal subversion-controlled files and directories.

  • Addedexclude=patternlist option tosetuptools.find_packages()

  • Changed –tag-svn-revision to include an “r” in front of the revision numberfor better readability.

  • Added ability to build eggs without including source files (except for anyscripts, of course), using the--exclude-source-files option tobdist_egg.

  • setup.pyinstall now automatically detects when an “unmanaged” packageor module is going to be onsys.path ahead of a package being installed,thereby preventing the newer version from being imported. If this occurs,a warning message is output tosys.stderr, but installation proceedsanyway. The warning message informs the user what files or directoriesneed deleting, and advises them they can also use EasyInstall (with the--delete-conflicting option) to do it automatically.

  • Theegg_info command now adds atop_level.txt file to the metadatadirectory that lists all top-level modules and packages in the distribution.This is used by theeasy_install command to find possibly-conflicting“unmanaged” packages when installing the distribution.

  • Addedzip_safe andnamespace_packages arguments tosetup().Added package analysis to determine zip-safety if thezip_safe flagis not given, and advise the author regarding what code might need changing.

  • Fixed the swapped-d and-b options ofbdist_egg.

  • EasyInstall now automatically detects when an “unmanaged” package ormodule is going to be onsys.path ahead of a package you’re installing,thereby preventing the newer version from being imported. By default, itwill abort installation to alert you of the problem, but there are alsonew options (--delete-conflicting and--ignore-conflicts-at-my-risk)available to change the default behavior. (Note: this new feature doesn’ttake effect for egg files that were built with oldersetuptoolsversions, because they lack the new metadata file required to implement it.)

  • Theeasy_install distutils command now usesDistutilsError as itsbase error type for errors that should just issue a message to stderr andexit the program without a traceback.

  • EasyInstall can now be given a path to a directory containing a setupscript, and it will attempt to build and install the package there.

  • EasyInstall now performs a safety analysis on module contents to determinewhether a package is likely to run in zipped form, and displaysinformation about what modules may be doing introspection that would breakwhen running as a zipfile.

  • Added the--always-unzip/-Z option, to force unzipping of packages thatwould ordinarily be considered safe to unzip, and changed the meaning of--zip-ok/-z to “always leave everything zipped”.

0.5a8

  • The “egg_info” command now always sets the distribution metadata to “safe”forms of the distribution name and version, so that distribution files willbe generated with parseable names (i.e., ones that don’t include ‘-’ in thename or version). Also, this means that if you use the various--tagoptions of “egg_info”, any distributions generated will use the tags in theversion, not just egg distributions.

  • Added support for defining command aliases in distutils configuration files,under the “[aliases]” section. To prevent recursion and to allow aliases tocall the command of the same name, a given alias can be expanded only onceper command-line invocation. You can define new aliases with the “alias”command, either for the local, global, or per-user configuration.

  • Added “rotate” command to delete old distribution files, given a set ofpatterns to match and the number of files to keep. (Keeps the mostrecently-modified distribution files matching each pattern.)

  • Added “saveopts” command that saves all command-line options for the currentinvocation to the local, global, or per-user configuration file. Useful forsetting defaults without having to hand-edit a configuration file.

  • Added a “setopt” command that sets a single option in a specified distutilsconfiguration file.

  • There is now a separate documentation page for setuptools; revisionhistory that’s not specific to EasyInstall has been moved to that page.

0.5a7

  • Added “upload” support for egg and source distributions, including a bugfix for “upload” and a temporary workaround for lack of .egg support inPyPI.

0.5a6

  • Beefed up the “sdist” command so that if you don’t have a MANIFEST.in, itwill include all files under revision control (CVS or Subversion) in thecurrent directory, and it will regenerate the list every time you create asource distribution, not just when you tell it to. This should make thedefault “do what you mean” more often than the distutils’ default behaviordid, while still retaining the old behavior in the presence of MANIFEST.in.

  • Fixed the “develop” command always updating .pth files, even if youspecified-n or--dry-run.

  • Slightly changed the format of the generated version when you use--tag-build on the “egg_info” command, so that you can make taggedrevisions comparelower than the version specified in setup.py (e.g. byusing--tag-build=dev).

0.5a5

  • Addeddevelop command tosetuptools-based packages. This commandinstalls an.egg-link pointing to the package’s source directory, andscript wrappers thatexecfile() the source versions of the package’sscripts. This lets you put your development checkout(s) on sys.path withouthaving to actually install them. (To uninstall the link, useusesetup.pydevelop--uninstall.)

  • Addedegg_info command tosetuptools-based packages. This commandjust creates or updates the “projectname.egg-info” directory, withoutbuilding an egg. (It’s used by thebdist_egg,test, anddevelopcommands.)

  • Enhanced thetest command so that it doesn’t install the package, butinstead builds any C extensions in-place, updates the.egg-infometadata, adds the source directory tosys.path, and runs the testsdirectly on the source. This avoids an “unmanaged” installation of thepackage tosite-packages or elsewhere.

  • Madeeasy_install a standardsetuptools command, moving it fromtheeasy_install module tosetuptools.command.easy_install. Notethat if you were importing or extending it, you must now change your importsaccordingly.easy_install.py is still installed as a script, but not asa module.

0.5a4

  • Setup scripts using setuptools can now list their dependencies directly inthe setup.py file, without having to manually create adepends.txt file.Theinstall_requires andextras_require arguments tosetup()are used to create a dependencies file automatically. If you are manuallycreatingdepends.txt right now, please switch to using these setuparguments as soon as practical, becausedepends.txt support will beremoved in the 0.6 release cycle. For documentation on the new arguments,see thesetuptools.dist.Distribution class.

  • Setup scripts using setuptools now always install usingeasy_installinternally, for ease of uninstallation and upgrading.

  • Added--always-copy/-a option to always copy needed packages to theinstallation directory, even if they’re already present elsewhere onsys.path. (In previous versions, this was the default behavior, but nowyou must request it.)

  • Added--upgrade/-U option to force checking PyPI for latest availableversion(s) of all packages requested by name and version, even if a matchingversion is available locally.

  • Added automatic installation of dependencies declared by a distributionbeing installed. These dependencies must be listed in the distribution’sEGG-INFO directory, so the distribution has to have declared itsdependencies by using setuptools. If a package has requirements it didn’tdeclare, you’ll still have to deal with them yourself. (E.g., by askingEasyInstall to find and install them.)

  • Added the--record option toeasy_install for the benefit of toolsthat runsetup.pyinstall--record=filename on behalf of anotherpackaging system.)

0.5a3

  • Fixed not setting script permissions to allow execution.

  • Improved sandboxing so that setup scripts that want a temporary directory(e.g. pychecker) can still run in the sandbox.

0.5a2

  • Fix stupid stupid refactoring-at-the-last-minute typos. :(

0.5a1

  • Added support for “self-installation” bootstrapping. Packages can nowincludeez_setup.py in their source distribution, and add the followingto theirsetup.py, in order to automatically bootstrap installation ofsetuptools as part of their setup process:

    fromez_setupimportuse_setuptoolsuse_setuptools()fromsetuptoolsimportsetup# etc...
  • Added support for converting.win32.exe installers to eggs on the fly.EasyInstall will now recognize such files by name and install them.

  • Fixed a problem with picking the “best” version to install (versions werebeing sorted as strings, rather than as parsed values)

0.4a4

  • Added support for the distutils “verbose/quiet” and “dry-run” options, aswell as the “optimize” flag.

  • Support downloading packages that were uploaded to PyPI (by scanning alllinks on package pages, not just the homepage/download links).

0.4a3

  • Add progress messages to the search/download process so that you can tellwhat URLs it’s reading to find download links. (Hopefully, this will helppeople report out-of-date and broken links to package authors, and to tellwhen they’ve asked for a package that doesn’t exist.)

0.4a2

  • Addedez_setup.py installer/bootstrap script to make initial setuptoolsinstallation easier, and to allow distributions using setuptools to avoidhaving to include setuptools in their source distribution.

  • All downloads are now managed by thePackageIndex class (which is nowsubclassable and replaceable), so that embedders can more easily overridedownload logic, give download progress reports, etc. The class has alsobeen moved to the newsetuptools.package_index module.

  • TheInstaller class no longer handles downloading, manages a temporarydirectory, or tracks thezip_ok option. Downloading is now handledbyPackageIndex, andInstaller has become aneasy_installcommand class based onsetuptools.Command.

  • There is a newsetuptools.sandbox.run_setup() API to invoke a setupscript in a directory sandbox, and a newsetuptools.archive_util modulewith anunpack_archive() API. These were split out of EasyInstall toallow reuse by other tools and applications.

  • setuptools.Command now supports reinitializing commands using keywordarguments to set/reset options. Also,Command subclasses can now settheircommand_consumes_arguments attribute toTrue in order toreceive anargs option containing the rest of the command line.

  • Added support for installing scripts

  • Added support for setting options via distutils configuration files, andusing distutils’ default options as a basis for EasyInstall’s defaults.

  • Renamed--scan-url/-s to--find-links/-f to free up-s for thescript installation directory option.

  • Useurllib2 instead ofurllib, to allow use ofhttps: URLs ifPython includes SSL support.

0.4a1

  • Added--scan-url and--index-url options, to scan download pagesand search PyPI for needed packages.

0.3a4

  • Restrict--build-directory=DIR/-bDIR option to only be used with singleURL installs, to avoid running the wrong setup.py.

0.3a3

  • Added--build-directory=DIR/-bDIR option.

  • Added “installation report” that explains how to use ‘require()’ when doinga multiversion install or alternate installation directory.

  • Added SourceForge mirror auto-select (Contributed by Ian Bicking)

  • Added “sandboxing” that stops a setup script from running if it attempts towrite to the filesystem outside of the build area

  • Added more workarounds for packages with quirkyinstall_data hacks

0.3a2

  • Added new options tobdist_egg to allow tagging the egg’s version numberwith a subversion revision number, the current date, or an explicit tagvalue. Runsetup.pybdist_egg--help to get more information.

  • Added subversion download support forsvn: andsvn+ URLs, as well asautomatic recognition of HTTP subversion URLs (Contributed by Ian Bicking)

  • Misc. bug fixes

0.3a1

  • Initial release.

Credits

  • The original design for the.egg format and thepkg_resources API wasco-created by Phillip Eby and Bob Ippolito. Bob also implemented the firstversion ofpkg_resources, and supplied the macOS operating system versioncompatibility algorithm.

  • Ian Bicking implemented many early “creature comfort” features ofeasy_install, including support for downloading via Sourceforge andSubversion repositories. Ian’s comments on the Web-SIG about WSGIapplication deployment also inspired the concept of “entry points” in eggs,and he has given talks at PyCon and elsewhere to inform and educate thecommunity about eggs and setuptools.

  • Jim Fulton contributed time and effort to build automated tests of variousaspects ofeasy_install, and supplied the doctests for the command-line.exe wrappers on Windows.

  • Phillip J. Eby is the seminal author of setuptools, andfirst proposed the idea of an importable binary distribution format forPython application plug-ins.

  • Significant parts of the implementation of setuptools were funded by the OpenSource Applications Foundation, to provide a plug-in infrastructure for theChandler PIM application. In addition, many OSAF staffers (such as Mike“Code Bear” Taylor) contributed their time and stress as guinea pigs for theuse of eggs and setuptools, even before eggs were “cool”. (Thanks, guys!)

  • Tarek Ziadé is the principal author of the Distribute fork, whichre-invigorated the community on the project, encouraged renewed innovation,and addressed many defects.

  • Jason R. Coombs performed the merge with Distribute, maintaining theproject for several years in coordination with the Python PackagingAuthority (PyPA).

On this page

[8]ページ先頭

©2009-2025 Movatter.jp