Links
setup.cfg filespyproject.toml filespkg_resourcesProject
setup() Keywordsdependency_linkszip_safe flagsetuptools commandsRemove post-release tags on setuptools’ own build. (#4530)
#5033
26 May 2025
20 May 2025
14 May 2025
14 May 2025
Removed usage of pkg_resources from installer. Set an official deadline on the installer deprecation to 2025-10-31. (#4997)
14 May 2025
Added a build dependency on coherent.licensed to inject the declared license text at build time. (#4981)
11 May 2025
Replaced more references to pkg_resources with importlib equivalents. (#3085)
09 May 2025
Simplified the error reporting in editable installs. (#4984)
04 May 2025
Restored select attributes in easy_install for temporary pbr compatibility. (#4976)
03 May 2025
02 May 2025
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)
30 Apr 2025
Added a deadline of Oct 31 to the setup.py install deprecation.
Withsetup.pyinstall--prefix=..., fall back to distutils install rather than failing. Note that runningsetup.pyinstall is deprecated. (#3143)
29 Apr 2025
Fixed index_url logic in develop compatibility shim. (#4966)
27 Apr 2025
Update test to honor new behavior in importlib_metadata 8.7. (#4961)
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)
23 Apr 2025
Merge withpypa/distutils@24bd3179b including fix forpypa/distutils#355.
20 Apr 2025
Removed support for ‘legacy-editable’ installs. (#917)
19 Apr 2025
More fully sanitized the filename in PackageIndex._download. (#4946)
25 Mar 2025
Restore access to _get_vc_env with a warning. (#4874)
24 Mar 2025
Postponed removals of deprecated dash-separated and uppercase fields insetup.cfg.All packages with deprecated configurations are advised to move before 2026. (#4911)
24 Mar 2025
23 Mar 2025
Reverted distutils changes that broke the monkey patching of command classes. (#4902)
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)
20 Mar 2025
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)
19 Mar 2025
19 Mar 2025
Manually fix news fragment entries causing CI to crash when building docs. (#4891)
19 Mar 2025
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)
17 Mar 2025
In setuptools.msvc.EnvironmentInfo, now honor the correct paths when on an ARM host. (#4786)
11 Mar 2025
Fixed version error in changelog.
11 Mar 2025
09 Mar 2025
Synced withpypa/distutils@5589d7527 including a simplified shebang generation when building scripts (#4863). (#4865)
08 Mar 2025
Fix ImportError in distutils when configuring for linking. (#4866)
08 Mar 2025
Synced withpypa/distutils@91f75bb98 including exporting of PyInit_pkg (pypa/distutils#327) and a refactoring of the compiler classes into distutils.compilers (pypa/distutils#295). (#4852)
26 Feb 2025
Fixedpkg_resources.require(...) to also consider standardiseddist-info directories. (#4856)
25 Feb 2025
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)
08 Jan 2025
05 Jan 2025
Synced withpypa/distutils@c97a3db2f including better support for free threaded Python on Windows (pypa/distutils#310), improved typing support, and linter accommodations. (#4478)
Synced withpypa/distutils@ff11eed0c including bugfix for duplicate CFLAGS and adaption to support Python 3.13 is_abs in the C compiler (#4669). (#4790)
20 Nov 2024
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)
13 Nov 2024
Removed support forSETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION, as itis deemed prone to errors. (#4746)
11 Nov 2024
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)
Merge withpypa/distutils@251797602, including fix for dirutil.mkpath handling inpypa/distutils#304.
29 Oct 2024
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)
16 Oct 2024
15 Oct 2024
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)
16 Sep 2024
Deprecatedbdist_wheel.universal configuration. (#4617)
Removed reference to upload_docs module in entry points. (#4650)
15 Sep 2024
Declare also the dependencies used by distutils (adds jaraco.collections).
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)
15 Sep 2024
Fix cross-platform compilation usingdistutils._msvccompiler.MSVCCompiler – by@saschanaz and@Avasam (#4648)
04 Sep 2024
03 Sep 2024
Fixed TypeError inmsvc.EnvironmentInfo.return_env when no runtime redistributables are installed. (#1902)
02 Sep 2024
Added support for definingext-modules viapyproject.toml(EXPERIMENTAL, may change in future releases). (#4568)
Merge withpypa/distutils@3dcdf8567, removing the duplicate vendored copy of packaging. (#4622)
Restoredsetuptools.msvc.Environmentinfo as it is used externally. (#4625)
27 Aug 2024
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)
Removed the monkeypatching of distutils._msvccompiler. Now all compiler logic is consolidated in distutils. (#4600)
Synced withpypa/distutils@58fe058e4, including consolidating Visual Studio 2017 support (#4600,pypa/distutils#289), removal of deprecated legacy MSVC compiler modules (pypa/distutils#287), suppressing of errors when the home directory is missing (pypa/distutils#278), removal of wininst binaries (pypa/distutils#282). (#4606)
20 Aug 2024
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)
19 Aug 2024
Mark abstract base classes and methods withabc.ABC andabc.abstractmethod – by@Avasam (#4503)
Changed the order of type checks insetuptools.command.easy_install.CommandSpec.from_param to support anycollections.abc.Iterable ofstr param – by@Avasam (#4505)
Prevent an error inbdist_wheel ifcompression is set to astr (even if valid) after finalizing options but before running the command. – by@Avasam (#4383)
Raises an exception whenpy_limited_api is used in a build withPy_GIL_DISABLED. This is currently not supported (python/cpython#111506). (#4420)
Synced withpypa/distutils@30b7331 including fix for modified check on empty sources (pypa/distutils#284).
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)
02 Aug 2024
Merged withpypa/distutils@b7ee725f3 including: Support for Pathlike objects in data files and extensions (pypa/distutils#272,pypa/distutils#237), native support for C++ compilers (pypa/distutils#228) and removed unused get_msvcr() (pypa/distutils#274). (#4538)
29 Jul 2024
28 Jul 2024
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)
21 Jul 2024
Added return types to typed public functions – by@Avasam
MarkedPackage Discovery and Resource Access using pkg_resources aspy.typed – by@Avasam (#4409)
19 Jul 2024
Removed lingering unused code around Distribution._patched_dist. (#4489)
18 Jul 2024
Reset the backports module when enabling vendored packages. (#4476)
18 Jul 2024
Include all vendored files in the sdist. (#4480)
17 Jul 2024
Restored package data that went missing in 71.0. This change also incidentally causes tests to be installed once again. (#4475)
17 Jul 2024
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)
09 Jul 2024
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)
Bugfix for building Cython extension on Windows (pypa/distutils#268).
01 Jul 2024
Updated distutils including significant changes to support Cygwin and mingw compilers. (#4444)
25 Jun 2024
19 Jun 2024
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)
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)
21 May 2024
Emit a warning when[tools.setuptools] is present inpyproject.toml and will be ignored. – by@SnoopJ (#4150)
ImprovedAttributeError error message ifpkg_resources.EntryPoint.require is called without extras or distributionGracefully “do nothing” when trying to activate apkg_resources.Distribution with aNone location, rather than raising aTypeError– by@Avasam (#4262)
Typed the dynamically defined variables fromPackage Discovery and Resource Access using pkg_resources – by@Avasam (#4267)
Modernized and refactored VCS handling in package_index. (#4332)
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)
Uses RST substitution to put badges in 1 line. (#4312)
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 ofdistutils’build.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)
13 Apr 2024
No significant changes.
13 Apr 2024
13 Apr 2024
Merged bugfix forpypa/distutils#246.
13 Apr 2024
No significant changes.
12 Apr 2024
Merged withpypa/distutils@55982565e, including interoperability improvements for rfc822_escape (pypa/distutils#213), dynamic resolution of config_h_filename for Python 3.13 compatibility (pypa/distutils#219), added support for the z/OS compiler (pypa/distutils#216), modernized compiler options in unixcompiler (pypa/distutils#214), fixed accumulating flags bug after compile/link (pypa/distutils#207), fixed enconding warnings (pypa/distutils#236), and general quality improvements (pypa/distutils#234). (#4298)
13 Apr 2024
Remove attempt to canonicalize the version. It’s already canonical enough. (#4302)
12 Apr 2024
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)
13 Mar 2024
Explicitly useencoding="locale" for.pth files whenever possible,to reduceEncodingWarnings.This avoid errors with UTF-8 (see discussion inpython/cpython#77102). (#4265)
Clarify somePackage Discovery and Resource Access using pkg_resources methods returnbytes, notstr. Also return an emptybytes inEmptyProvider._get – by@Avasam (#4243)
Return an emptylist by default inpkg_resources.ResourceManager.cleanup_resources – by@Avasam (#4244)
Madepkg_resoursces.NullProvider’shas_metadata andmetadata_isdir methods return actual booleans like all other Providers. – by@Avasam (#4254)
23 Feb 2024
Fix argument order of--config-settings["--build-option"] arguments.This was broken by <https://github.com/pypa/setuptools/pull/4079>`. (#4217)
11 Feb 2024
Updated and removed obsolete Python < 3.8 code and comments. – by@Avasam (#4096)
UpdatedPackage Discovery and Resource Access using pkg_resources to use stdlibimportlib.machinery instead ofimportlib_machinery – by@Avasam (#4097)
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)
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)
23 Dec 2023
Retain valid names with underscores in egg_info.
21 Nov 2023
Added missing estimated date for removingsetuptools.dep_util (deprecated in v69.0.0). (#4131)
21 Nov 2023
Fixed imports ofsetuptools.dep_util.newer_group.A deprecation warning is issued instead of a hard failure. (#4126)
20 Nov 2023
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)
12 Sep 2023
Improve backwards compatibility with deprecated CLI practices. (#4048)
11 Sep 2023
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)
06 Sep 2023
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)
18 Aug 2023
18 Aug 2023
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)
15 Aug 2023
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.
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)
19 Jun 2023
#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.
#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).
#3920: Add a link to deprecation warning inpkg_resources and improvestacklevel for better visibility.
19 May 2023
#3128: In deprecated easy_install, reload and merge the pth file before saving.
#3915: Adequate tests to the latest changes invirtualenv for Python 3.12.
24 Apr 2023
#3902: Fixed wrong URLs used in warnings and logs.
21 Apr 2023
#3898: Fixes setuptools.dist:invalid_unless_false when value is false don’t raise error – by@jammarher
20 Apr 2023
#3849: Overhaul warning system for better visibility.
28 Mar 2023
08 Mar 2023
06 Mar 2023
#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.
05 Mar 2023
#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.
21 Feb 2023
#3832: Update vendoredimportlib-metadata (to 6.0.0) andimportlib-resources (to 5.10.2)
20 Feb 2023
#3820: Restore quoted#include argument tohas_function.
15 Feb 2023
#3827: Improve deprecation warning message onpkg_resources.declare_namespaceto display package name.
14 Feb 2023
#3823: Fixesegg_info code path triggered during integration withpip.
13 Feb 2023
#3792: Reduced usage ofpkg_resources insetuptools via internalrestructuring and refactoring.
#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.
06 Feb 2023
#3809: Merge withdistutils@8c3c3d29, including fix forsysconfig.get_python_inc() (pypa/distutils#178), fix for segfault on MinGW (pypa/distutils#196), and betterhas_function support (pypa/distutils#195,#3648).
01 Feb 2023
#3795: Ensured that__file__ is an absolute path when executingsetup.py aspart ofsetuptools.build_meta.
28 Jan 2023
#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.
20 Jan 2023
#3782: Fixed problem withfile directive intool.setuptools.dynamic(pyproject.toml) when value is a simple string instead of list.
20 Jan 2023
#3776: Added note about using the--pep-517 flag withpip to workaroundInvalidVersion errors for packages that are already installed in the system.
15 Jan 2023
#3769: Replace ‘appdirs’ with ‘platformdirs’.
11 Jan 2023
#3594: Addedhtmlcov to FlatLayoutModuleFinder.DEFAULT_EXCLUDE – by@demianbrecht
#3667: Added a human-readable error description when.egg-info directory is not writeable – by@droodev
#3713: Fixed incompletegetattr statement that caused problems when accessingundefined attribute.
23 Nov 2022
#3709: Fix condition to patchdistutils.dist.log to only apply when usingdistutils from the stdlib.
23 Nov 2022
No significant changes.
23 Nov 2022
#3689: Documented thatdistutils.cfg might be ignored unlessSETUPTOOLS_USE_DISTUTILS=stdlib.
#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.
18 Nov 2022
#3674: Sync withpypa/distutils@e0787fa, includingpypa/distutils#183 updating distutils to use the Python logging framework.
04 Nov 2022
#3638: Drop a test dependency on themock package, always useunittest.mock – by@hroncok
14 Oct 2022
29 Sep 2022
#3613: Fixed encoding errors inexpand.StaticModule when system default encoding doesn’t match expectations for source files.
#3617: Merge withpypa/distutils@6852b20 including fix forpypa/distutils#181.
24 Sep 2022
#3609: Merge withpypa/distutils@d82d926 including support for DIST_EXTRA_CONFIG inpypa/distutils#177.
24 Aug 2022
#3554: Changed requires to requests in the pyproject.toml example in theDependency management section of the Quickstart guide – by@mfbutner
#3561: Fixed accidental name matching in editable hooks.
21 Aug 2022
#3553: Sync withpypa/distutils@22b9bcf, including fixed cross-compiling support and removing deprecation warning perpypa/distutils#169.
21 Aug 2022
#3551: Avoided circular imports in meta path finder for editable installs when amissing module has the same name as its parent.
18 Aug 2022
#3536: Remove monkeypatching of msvc9compiler.
#3538: Corrected documentation on how to use thelegacy-editable mode.
16 Aug 2022
#3505: Restored distutils msvccompiler and msvc9compiler modules and marked as deprecated (pypa/distutils@c802880).
15 Aug 2022
#3529: Added clarification toQuickstart about supporttosetup.py.
14 Aug 2022
#3519: Changed the note inkeywords documentation regarding editable installationsto specify whichsetuptools version require a minimalsetup.py file or not.
12 Aug 2022
#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.
12 Aug 2022
#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.
11 Aug 2022
#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).
11 Aug 2022
#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.
#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.
#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.
#3414: UpdatedDevelopment Mode to reflect on theimplementation ofPEP 660.
10 Aug 2022
#3496: Update topypa/distutils@b65aa40 including more robust support for library/include dir handling in msvccompiler (pypa/distutils#153) and test suite improvements.
06 Aug 2022
03 Aug 2022
#3482: Sync withpypa/distutils@274758f1c02048d295efdbc13d2f88d9923547f8, restoring compatibility shim in bdist.format_commands.
02 Aug 2022
#2971:upload_docs command is deprecated once again.
#3480: Merge withpypa/distutils@c397f4c
31 Jul 2022
#3475: Merge withpypa/distutils@129480b, including substantial delinting and cleanup, some refactoring around compiler logic, better messaging in cygwincompiler (pypa/distutils#161).
13 Jul 2022
#3435: Corrected issue in macOS framework builds on Python 3.9 not installed by homebrew (pypa/distutils#158).
03 Jul 2022
#3430: Merge withpypa/distutils@152c13d includingpypa/distutils#155 (improved compatibility for editable installs on homebrew Python 3.9),pypa/distutils#150 (better handling of runtime_library_dirs on cygwin), andpypa/distutils#151 (remove warnings for namespace packages).
04 Jul 2022
#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.
#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
19 Jun 2022
#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
17 Jun 2022
#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.
#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.
#3385: Modules used to parse and evaluate configuration frompyproject.toml files areintended for internal use only and that not part of the public API.
13 Jun 2022
#3256: Added setuptools.command.build command to match distutils.command.build – by@isuruf
#3366: Merge withpypa/distutils@75ed79d including reformat using black, fix for Cygwin support (pypa/distutils#139), and improved support for cross compiling (pypa/distutils#144 andpypa/distutils#145).
#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).
11 Jun 2022
#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.
#3354: Improve clarity in warning about unlisted namespace packages.
07 Jun 2022
#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
18 May 2022
#3328: Include a first line summary to some of the existing multi-line warnings.
17 May 2022
#3320: Fixed typo which causesnamespace_packages to raise an error instead ofwarning.
16 May 2022
#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.
#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.
#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.
10 May 2022
#3299: Optional metadata fields are now truly optional. Includes merge withpypa/distutils@a7cfb56 perpypa/distutils#138.
#3282: Added CI cache forsetup.cfg examples used when testingsetuptools.config.
10 Apr 2022
#3258: Mergepypa/distutils@5229dad46b.
#3249: Simplifiedpackage_dir obtained via auto-discovery.
04 Apr 2022
#3151: Madesetup.pydevelop--user install to the user site packages directory even if it is disabled in the current interpreter.
01 Apr 2022
31 Mar 2022
#3229: Disabled automatic download oftrove-classifiers to facilitate reproducibility.
27 Mar 2022
#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
#3217: Fixed typo inpyproject.toml example in Quickstart – by@pablo-cardenas.
#3223: Fixed missing requirements with environment markers whenoptional-dependencies is set inpyproject.toml.
26 Mar 2022
25 Mar 2022
#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.
#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.
24 Mar 2022
#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).
#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.
#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
#3172: Added initial documentation about configuringsetuptools viapyproject.toml(using standard project metadata).
#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).
16 Mar 2022
#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).
#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.
17 Feb 2022
#3093: Repaired automated release process.
15 Feb 2022
#3035: When loading distutils from the vendored copy, rewrite__name__ to ensure consistent importing from inside and out.
14 Feb 2022
13 Feb 2022
#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.
08 Feb 2022
#3091: Makeconcurrent.futures import lazy in vendoredmore_itertoolspackage to a avoid importing threading as a side effect (which causedgevent/gevent#1865).– by@maciejp-ro
06 Feb 2022
#3084: When vendoring jaraco packages, ensure the namespace package is converted to a simple package to support zip importer.
05 Feb 2022
#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.
02 Feb 2022
#3072: Remove lorem_ipsum from jaraco.text when vendored.
01 Feb 2022
#3061: Vendored jaraco.text and use line processing from that library in pkg_resources.
#3070: Avoid AttributeError in easy_install.create_home_path when sysconfig.get_config_vars values are not strings.
30 Jan 2022
#3043: Merge withpypa/distutils@bb018f1ac3 including consolidated behavior in sysconfig.get_platform (pypa/distutils#104).
#3057: Don’t include optionalHome-page in metadata if nourl is specified. – by@cdce8p
#3062: Merge withpypa/distutils@b53a824ec3 including improved support for lib directories on non-x64 Windows builds.
#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
16 Jan 2022
13 Jan 2022
#3026: Honor sysconfig variables in easy_install.
11 Jan 2022
#2993: In _distutils_hack, for get-pip, simulate existence of setuptools.
10 Jan 2022
#2918: Correct support for Python 3 native loaders.
08 Jan 2022
#2990: Set the.origin attribute of thedistutils module to the module’s__file__.
08 Jan 2022
#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).
06 Jan 2022
#3002: Suppress AttributeError when detecting get-pip.
05 Jan 2022
#2993: In _distutils_hack, bypass the distutils exception for pip when get-pip is being invoked, because it imports setuptools.
#2989: Merge withpypa/distutils@788cc159. Includes fix for config vars missing from sysconfig.
29 Dec 2021
#2974: Setuptools now relies on the Python logging infrastructure to log messages. Instead of usingdistutils.log.*, uselogging.getLogger(name).*.
#2987: Sync withpypa/distutils@2def21c5d74fdd2fe7996ee4030ac145a9d751bd, including fix for missing get_versions attribute (#2969), more reliance on sysconfig from stdlib.
28 Dec 2021
#2980: Bypass distutils loader when setuptools module is no longer available on sys.path.
23 Dec 2021
#2958: In distutils_hack, only add the metadata finder once. In ensure_local_distutils, rely on a context manager for reliable manipulation.
#2963: Merge withpypa/distutils@a5af364910. Includes revisited fix forpypa/distutils#15 and improved MinGW/Cygwin support frompypa/distutils#77.
23 Dec 2021
#2960: Install schemes fall back to default scheme for headers.
22 Dec 2021
#2954: Merge withpypa/distutils@eba2bcd310. Adds platsubdir to config vars available for substitution.
20 Dec 2021
#2940: Avoid KeyError in distutils hack when pip is imported during ensurepip.
20 Dec 2021
#2938: Select ‘posix_user’ for the scheme unless falling back to stdlib, then use ‘unix_user’.
20 Dec 2021
#2944: Add support for extended install schemes in easy_install.
19 Dec 2021
#2896: Setuptools once again makes its local copy of distutils the default. To override, set SETUPTOOLS_USE_DISTUTILS=stdlib.
19 Dec 2021
17 Dec 2021
#2930: Require Python 3.7
12 Dec 2021
#2925: Merge withpypa/distutils@92082ee42c including introduction of deprecation warning on Version classes.
05 Dec 2021
#2914: Merge withpypa/distutils@8f2df0bf6.
28 Nov 2021
#2893: Restore deprecated support for newlines in the Summary field.
26 Nov 2021
#2902: Merge withpypa/distutils@85db7a41242.
#2906: In ensure_local_distutils, re-use DistutilsMetaFinder to load the module. Avoids race conditions when _distutils_system_mod is employed.
18 Nov 2021
#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.
15 Nov 2021
#2885: Fixed errors when encountering LegacyVersions.
14 Nov 2021
#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.
14 Nov 2021
#2880: Removed URL requirement forpytest-virtualenv insetup.cfg.PyPI rejects packages with dependencies external to itself.Instead the test dependency was overwritten viatox.ini
12 Nov 2021
#2856: Support for custom commands that inherit directly fromdistutils isdeprecated. Users should extend classes provided by setuptools instead.
#2870: Started failing on invalid inline description with line breaksValueError – by@webknjaz
#2698: Exposed exception classes fromdistutils.errors viasetuptools.errors.
#2866: Incorporate changes frompypa/distutils@f1b0a2b.
#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
04 Nov 2021
03 Nov 2021
#2847: Suppress ‘setup.py install’ warning under bdist_wheel.
03 Nov 2021
#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.
03 Nov 2021
#1461: Fix inconsistency withinclude_package_data andpackages_data in sdistby replacing the loop breaking mechanism between thesdist andegg_info commands – by@abravalheri
31 Oct 2021
#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
22 Oct 2021
#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.
#2762: Changed codecov.yml to configure the threshold to be lower– by@tanvimoharir
01 Oct 2021
21 Sep 2021
#2796: Merge withpypa/distutils@02e9f65ab0
08 Sep 2021
#2773: Retain case in setup.cfg during sdist.
07 Sep 2021
#2777: Build does not fail fast whenuse_2to3 is supplied but set to a false value.
06 Sep 2021
#2769: Build now fails fast whenuse_2to3 is supplied.
06 Sep 2021
#2765: In Distribution.finalize_options, suppress known removed entry points to avoid issues with older Setuptools.
04 Sep 2021
#2746: add python_requires example
04 Sep 2021
#2712: Added implicit globbing support for[options.data_files] values.
#2737: fix various syntax and style errors in code snippets in docs
18 Jul 2021
#2722: Added support forSETUPTOOLS_EXT_SUFFIX environment variable to override the suffix normally detected from thesysconfig module.
18 Jul 2021
#2465: Documentation is now published using the Furo theme.
14 Jul 2021
#2724: Added detection of Windows ARM64 build environments using theVSCMD_ARG_TGT_ARCH environment variable.
04 Jul 2021
#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.
#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.
22 May 2021
#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.
09 May 2021
04 May 2021
#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.
08 Apr 2021
30 Mar 2021
22 Mar 2021
22 Mar 2021
No significant changes.
14 Mar 2021
#2595: Reduced scope of dash deprecation warning to Setuptools/distutils only – by@melissa-kun-li
06 Mar 2021
#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
05 Mar 2021
#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
28 Feb 2021
#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.
#1932: HandledAttributeError by raisingDistutilsSetupError indist.check_specifier() when specifier is not a string – by@melissa-kun-li
#2570: Correctly parse cmdclass in setup.cfg.
#2553: Added userguide example for markers in extras_require – by@pwoolvett
25 Feb 2021
#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
01 Feb 2021
#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.
23 Jan 2021
17 Jan 2021
#2539: Fix AttributeError in Description validation.
17 Jan 2021
#1390: Validation of Description field now is more lenient, emitting a warning and mangling the value to be valid (replacing newlines with spaces).
16 Jan 2021
#2536: Reverted tag deduplication handling.
16 Jan 2021
#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
16 Jan 2021
#2534: Avoid hitting network during test_easy_install.
08 Jan 2021
#2505: Disable inclusion of package data as it causes ‘tests’ to be included as data.
28 Dec 2020
#2534: Avoid hitting network during test_virtualenv.test_test_command.
21 Dec 2020
#2486: Project adopts jaraco/skeleton for shared package maintenance.
06 Dec 2020
#2435: Require Python 3.6 or later.
#2471: Removed the tests that guarantee that the vendored dependencies can be built by distutils.
17 Oct 2020
#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
14 Oct 2020
05 Sep 2020
#2368: In distutils, restore support for monkeypatched CCompiler.spawn perpypa/distutils#15.
04 Sep 2020
#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.
02 Sep 2020
#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.
01 Sep 2020
#2363: Restore link_libpython support on Python 3.7 and earlier (seepypa/distutils#9).
01 Sep 2020
01 Sep 2020
#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).
20 Aug 2020
#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.
#2334: In MSVC module, refine text in error message.
13 Aug 2020
#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.
13 Aug 2020
13 Aug 2020
#2310: Updated vendored packaging version to 20.4.
12 Aug 2020
#2300: Improve thesafe_version function documentation
#2297: Once again, in stubs prefer exec_module to the deprecated load_module.
10 Aug 2020
#2316: Removed warning whendistutils is imported beforesetuptools whendistutils replacement is not enabled.
09 Aug 2020
#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.
02 Aug 2020
#2257: Fixed two flaws in distutils._msvccompiler.MSVCCompiler.spawn.
12 Jul 2020
#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.
12 Jul 2020
11 Jul 2020
#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.
10 Jul 2020
#2094: Removed pkg_resources.py2_warn module, which is no longer reachable.
05 Jul 2020
#2228: Applied fix forpypa/distutils#3, restoring expectation that spawn will raise a DistutilsExecError when attempting to execute a missing file.
03 Jul 2020
#2228: Disabled distutils adoption for now while emergent issues are addressed.
03 Jul 2020
#2199: Fix exception causes all over the codebase by usingraisenew_exceptionfromold_exception
03 Jul 2020
#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).
03 Jul 2020
#2071: Replaced references to the deprecated imp package with references to importlib
16 Jun 2020
15 Jun 2020
#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.
#2195: Fix broken entry points generated by easy-install (pip editable installs).
15 Jun 2020
28 May 2020
#2156: Update mailing list pointer in developer docs
#2158: Avoid loading working set duringDistribution.finalize_options prior to invoking_install_setup_requires, broken since v42.0.0.
28 May 2020
#2158: Avoid loading working set duringDistribution.finalize_options prior to invoking_install_setup_requires, broken since v42.0.0.
28 May 2020
#2070: In wheel-to-egg conversion, use simple pkg_resources-style namespace declaration for packages that declare namespace_packages.
28 May 2020
#2094: Setuptools now actively crashes under Python 2. Python 3.5 or later is required. Users of Python 2 should usesetuptools<45.
#1700: Document all supported keywords by migrating the ones from distutils.
16 May 2020
#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.
15 May 2020
No significant changes.
13 May 2020
10 May 2020
#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.
#1698: Added documentation forbuild_meta (a bare minimum, not completed).
#2082: Filterlib2to3PendingDeprecationWarning andDeprecationWarning in tests,becauselib2to3 isdeprecated in Python 3.9.
25 Mar 2020
No significant changes.
25 Mar 2020
#1458: Added template for reporting Python 2 incompatibilities.
21 Mar 2020
No significant changes.
21 Mar 2020
#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.
21 Mar 2020
08 Mar 2020
#65: Once again as in 3.0, removed the Features feature.
#2011: Fix broken link to distutils docs on package_data
#1991: Include pkg_resources test data in sdist, so tests can be executed from it.
07 Mar 2020
08 Feb 2020
#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).
#1968: Add flake8-2020 to check for misuse of sys.version or sys.version_info.
19 Jan 2020
11 Jan 2020
#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.
#1959: Fix for Python 4: replace unsafe six.PY3 with six.PY2
01 Jan 2020
#1908: Drop support for Python 3.4.
31 Dec 2019
#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.
01 Dec 2019
25 Nov 2019
#1918: Fix regression in handling wheels compatibility tags.
23 Nov 2019
setup_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.
#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.
29 Oct 2019
#479: Replace usage of deprecatedimp module with local re-implementation insetuptools._imp.
28 Oct 2019
#1891: Fix code for detecting Visual Studio’s version on Windows under Python 2.
27 Oct 2019
#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.
#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.
#1886: Added Python 3.8 release to the Travis test matrix.
06 Oct 2019
#1847: In declarative config, now traps errors when invalidpython_requires values are supplied.
06 Oct 2019
#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+.
#1858: Fixed failing integration test triggered by ‘long_description_content_type’ in packaging.
21 Aug 2019
#479: Remove some usage of the deprecatedimp module.
#1565: Changed html_sidebars from string to list of string as perhttps://www.sphinx-doc.org/en/master/changes.html#id58
13 Aug 2019
#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.
#1776: Use license classifiers rather than the license field.
22 Apr 2019
#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
05 Apr 2019
#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.
03 Apr 2019
#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.
#1705: Removed some placeholder documentation sections referring to deprecated features.
05 Feb 2019
#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.
03 Feb 2019
31 Jan 2019
#1666: Restore port in URL handling in package_index.
28 Jan 2019
#1660: On Python 2, when reading config files, downcast options from text to bytes to satisfy distutils expectations.
27 Jan 2019
#1551: File inputs for thelicense field insetup.cfg files now explicitly raise an error.
#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.
11 Dec 2018
13 Nov 2018
#1592: Fix invalid dependency on external six module (instead of vendored version).
12 Nov 2018
#1590: Fixed regression where packages withoutauthor orauthor_email fields generated malformed package metadata.
12 Nov 2018
#1541: Officially deprecated therequires parameter insetup().
#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.
#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.
26 Oct 2018
#1525: Fixed rendering of the deprecation warning in easy_install doc.
23 Sep 2018
#1480: Bump vendored pyparsing in pkg_resources to 2.2.1.
21 Sep 2018
#1497: Updated gitignore in repo.
18 Sep 2018
#1480: Bump vendored pyparsing to 2.2.1.
18 Sep 2018
#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).
16 Sep 2018
#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.
#1479: Remove internal use of six.binary_type.
21 Aug 2018
21 Aug 2018
#1465: Fix regression withegg_info command when tagging is used.
17 Aug 2018
#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.
#1441: Removed spurious executable permissions from files that don’t need them.
09 Jul 2018
#1342: Drop support for Python 3.3.
19 May 2018
#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.
#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.
28 Apr 2018
18 Mar 2018
#1297: Restore Unicode handling for Maintainer fields inmetadata.
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.
17 Mar 2018
#1288: Add support for maintainer in PKG-INFO.
17 Mar 2018
#1292: Avoid generatingProvides-Extra in metadata whenno extra is present (but environment markers are).
15 Mar 2018
06 Mar 2018
06 Feb 2018
#1271: Revert to Cython legacybuild_ext behavior forcompatibility.
04 Feb 2018
03 Feb 2018
#1257: In bdist_egg.scan_module, fix ValueError on Python 3.7.
05 Jan 2018
#1231: Removed warning when PYTHONDONTWRITEBYTECODE is enabled.
04 Jan 2018
#1232: Fix trailing slash handling inpkg_resources.ZipProvider.
04 Dec 2017
#1220: Fixdata_files handling when installing from wheel.
28 Nov 2017
fix Travis’ Python 3.3 job.
27 Nov 2017
#1214: fix handling of namespace packages when installingfrom a wheel.
26 Nov 2017
#1212: fix encoding handling of metadata when installingfrom a wheel.
26 Nov 2017
#1200: easy_install now support installing from wheels:they will be installed as standalone unzipped eggs.
25 Nov 2017
#1208: Improve error message when failing to locate scriptsin egg-info metadata.
25 Nov 2017
#458: In order to support deterministic builds, Setuptools nolonger allows packages to declareinstall_requires asunordered sequences (sets or dicts).
20 Nov 2017
#878: Drop support for Python 2.6. Python 2.6 users shouldrely on ‘setuptools < 37dev’.
19 Nov 2017
#1190: In SSL support for package index operations, use SNIwhere available.
13 Nov 2017
#1175: Bug fixes tobuild_meta module.
13 Nov 2017
#701: Fixed duplicate test discovery on Python 3.
11 Nov 2017
#1193: Avoid test failures in bdist_egg whenPYTHONDONTWRITEBYTECODE is set.
09 Nov 2017
#1054: Supportsetup_requires insetup.cfg files.
09 Nov 2017
12 Oct 2017
15 Sep 2017
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.
28 Aug 2017
#1131: Make possible using several files withinfile: directivein metadata.long_description insetup.cfg.
02 Aug 2017
31 Jul 2017
#462: Don’t assume a directory is an egg by the.eggextension alone.
30 Jul 2017
26 Jul 2017
#1092:pkg_resources now usesinspect.getmro toresolve classes in method resolution order.
25 Jul 2017
#1102: Restore behavior for empty extras.
24 Jul 2017
#1099: Revert commit a3ec721, restoring intended purpose ofextras as part of a requirement declaration.
23 Jul 2017
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.
13 Jul 2017
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.
01 Jun 2017
#1042: Fix import in py27compat module that stillreferenced six directly, rather than through the externsmodule (vendored packages hook).
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.
27 Apr 2017
#1015: Fix test failures on Python 3.7.
#1024: Add workaround forJython #2581 in monkey module.
18 Apr 2017
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.
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.
07 Apr 2017
26 Mar 2017
11 Mar 2017
#993: Fix documentation upload by correctingrendering of content-type in _build_multiparton Python 3.
02 Mar 2017
23 Feb 2017
12 Feb 2017
03 Feb 2017
28 Jan 2017
#930:build_info now accepts two new parametersto optimize and customize the building of C libraries.
28 Jan 2017
#947: Loosen restriction on the version of six required,restoring compatibility with environments relying onsix 1.6.0 and later.
24 Jan 2017
23 Jan 2017
#935: Fix glob syntax in graft.
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.
16 Jan 2017
#921: Correct issue where certifi fallback not beingreached on Windows.
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.
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.
28 Dec 2016
#866: Usedis.Bytecode on Python 3.4 and later insetuptools.depends.
24 Dec 2016
#889: Backport proposed fix for disabling interpolation indistutils.Distribution.parse_config_files.
22 Dec 2016
#884: Restore support for running the tests underpytest-runnerby ensuring that PYTHONPATH is honored in tests invokinga subprocess.
21 Dec 2016
#706: Add rmtree compatibility shim for environments wherermtree fails when passed a unicode string.
18 Dec 2016
#893: Only release sdist in zip format as warehouse nowdisallows releasing two different formats.
18 Dec 2016
16 Dec 2016
#891: In ‘test’ command on test failure, raise DistutilsError,suppression invocation of subsequent commands.
14 Dec 2016
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.
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.
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.
08 Dec 2016
#394 via#862: Added support fordeclarative packageconfig in a setup.cfg file.
08 Dec 2016
#850: In test command, invoke unittest.main withindication not to exit the process.
04 Dec 2016
#854: Bump to vendoredPackaging 16.8.
03 Dec 2016
01 Dec 2016
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”.
25 Nov 2016
#841: Drop special exception for packages invokingwin32com during the build/install process. SeeDistribute #118 for history.
04 Nov 2016
29 Oct 2016
28 Oct 2016
19 Oct 2016
#816: Fix manifest file list order in tests.
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.
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.
14 Oct 2016
#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.
07 Oct 2016
01 Oct 2016
#803: Bump certifi to 2016.9.26.
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.
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).
20 Sep 2016
14 Sep 2016
09 Sep 2016
09 Sep 2016
#778: Fix MSVC monkeypatching.
09 Sep 2016
Introduce the (private)monkey module to encapsulatethe distutils monkeypatching behavior.
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.
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.
28 Aug 2016
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.
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.
19 Aug 2016
12 Aug 2016
05 Aug 2016
#725: revertlibrary_dir_option patch (Error is related tonumpy.distutils and make errors on non Numpy users).
05 Aug 2016
04 Aug 2016
02 Aug 2016
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.
28 Jul 2016
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.
25 Jul 2016
#688: Fix AttributeError in setup.py when invoked not fromthe current directory.
25 Jul 2016
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.
23 Jul 2016
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.
21 Jul 2016
#667: Update Metadata-Version to 1.2 whenpython_requires is supplied.
20 Jul 2016
#631: Add support forpython_requires keyword.
20 Jul 2016
20 Jul 2016
14 Jul 2016
04 Jul 2016
If MSVC++14 is neededsetuptools.msvc now redirectuser to Visual C++ Build Tools web page.
03 Jul 2016
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.
02 Jul 2016
Re-release of v23.2.0, which was missing the intendedcommits.
#623: Remove used of deprecated ‘U’ flag when readingmanifests.
24 Jun 2016
#619: Deprecatedtag_svn_revision distributionoption.
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/.
03 Jun 2016
#604: Restore repository for upload_docs commandto restore publishing of docs during release.
03 Jun 2016
#589: Upload releases to pypi.io using the uploadhostname and legacy path.
03 Jun 2016
#589: Releases are now uploaded to pypi.io (Warehouse)even when releases are made on Twine via Travis.
03 Jun 2016
#589: Releases are now uploaded to pypi.io (Warehouse).
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.
01 Jun 2016
Intended to be v21.3.0, but jaraco accidentally released asa major bump.
29 May 2016
Minor fixes to changelog and docs.
22 May 2016
#261: Exclude directories when resolving globs inpackage_data.
21 May 2016
#539: In the easy_install get_site_dirs, honor allpaths found insite.getsitepackages.
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.
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.
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.
16 Apr 2016
15 Apr 2016
Issue #544: Fix issue with extra environment markerprocessing in WorkingSet due to refactor in v20.7.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.
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.
09 May 2016
Issue #523: Restored support for environment markers,now honoring ‘extra’ environment markers.
31 Mar 2016
Issue #523: Disabled support for environment markersintroduced in v20.5.
30 Mar 2016
Issue #503: Restore support forPEP 345 environmentmarkers by updating toPackaging 16.6.
29 Mar 2016
New release process that relies onbumpversionand Travis CI for continuous deployment.
Project versioning semantics now followsemver precisely.The ‘v’ prefix on version numbers now also allowsversion numbers to be referenced in the changelog,e.g.http://setuptools.pypa.io/en/latest/history.html#v20-6-0.
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.
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.
18 Mar 2016
Issue #519: Remove import hook when reloading thepkg_resources module.
BB Pull Request #184: Update documentation inpkg_resourcesaround newRequirement implementation.
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.
27 Feb 2016
Issue #502: Correct regression in parsing of multipleversion specifiers separated by commas and spaces.
24 Feb 2016
Issue #499: Restore compatibility for legacy versionsby bumping topackaging 16.4.
19 Feb 2016
Changelog now includes release dates and links to PEPs.
BB Pull Request #173: Replace dualPEP 345 _markerlib implementationandPEP 426 implementation of environment marker support frompackaging 16.1 andPEP 508. FixesIssue #122.See alsoBB Pull Request #175,BB Pull Request #168, andBB Pull Request #164. Additionally:
12 Feb 2016
Updateupload_docs command to also honor keyringfor password resolution.
11 Feb 2016
Added support for using passwords from keyring in the uploadcommand. Seethe upload docsfor details.
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.
03 Feb 2016
Off-project PR:0dcee79 andf9bd9b9For FreeBSD, alsohonor root certificates from ca_root_nss.
31 Jan 2016
Issue #491: Correct regression incurred in 19.4 wherea double-namespace package installed using pip wouldcause a TypeError.
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.
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.
23 Jan 2016
Issue #486: Correct TypeError when getfilesystemencodingreturns None.
Issue #139: Clarified the license as MIT.
BB Pull Request #169: Removed special handling of commandspec in scripts for Jython.
23 Jan 2016
Issue #487: Use direct invocation ofimportlib.machineryinpkg_resources to avoid missing detection on relevantplatforms.
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.
06 Jan 2016
Issue #229: Implement new technique for readily incorporatingdependencies conditionally from vendored copies or primarylocations. Adds a new dependency on six.
25 Dec 2015
BB Pull Request #163: Add get_command_list method to Distribution.
BB Pull Request #162: Add missing whitespace to multiline stringliterals.
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).
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.
15 Dec 2015
Issue #442: Use RawConfigParser for parsing .pypirc file.Interpolated values are no longer honored in .pypirc files.
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.
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.
01 Dec 2015
Issue #469: Refactored logic forIssue #419 fix to re-use metadataloading from Provider.
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.
24 Nov 2015
Issue #464: Correct regression in invocation of superclass on old-styleclass on Python 2.
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.
01 Nov 2015
In preparation for dropping support for Python 3.2, a warning isnow logged when pkg_resources is imported on Python 3.2 or earlierPython 3 versions.
Add support for python_platform_implementation environment marker.
10 Oct 2015
Issue #446: Test command now always invokes unittest, evenif no test suite is supplied.
19 Sep 2015
Correct another regression in setuptools.findallwhere the fix forPython #12885 was lost.
07 Sep 2015
Issue #425: Correct regression in setuptools.findall.
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.
19 Aug 2015
Issue #412: More efficient directory search infind_packages.
02 Aug 2015
Upgrade to vendoredpackaging 15.3.
24 Jun 2015
Issue #401: Fix failure in test suite.
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.
08 Jun 2015
Backed out unintended changes to pkg_resources, restoring removal ofdeprecated imp module (ref).
07 Jun 2015
Issue #380: Add support for range operators on environmentmarker evaluation.
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.
18 May 2015
BB Pull Request #130: Better error messages for errors inparsed requirements.
BB Pull Request #133: Removedsetuptools.tests from theinstalled packages.
BB Pull Request #129: Address deprecation warning due to usageof imp module.
26 Apr 2015
Issue #373: Provisionally exposepkg_resources._initialize_master_working_set, allowing forimperative re-initialization of the master working set.
15 Apr 2015
Updated toPackaging 15.1 to addressPackaging #28.
Fixsetuptools.sandbox._execfile() with Python 3.1.
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.
20 Mar 2015
Issue #307: RemovedPEP-440 warning during parsing of versionsinpkg_resources.Distribution.
Issue #364: Replace deprecated usage with recommended usage ofEntryPoint.load.
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.
15 Mar 2015
Issue #137: UpdateDistribution.hashcmp so that Distributions withNone for pyversion or platform can be compared against Distributionsdefining those attributes.
14 Mar 2015
Issue #360: Removed undesirable behavior from test runs, preventingwrite tests and installation to system site packages.
14 Mar 2015
BB Pull Request #125: Add__ne__ to Requirement class.
Various refactoring of easy_install.
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.
06 Mar 2015
Issue #359: Include pytest.ini in the sdist so invocation of py.test on thesdist honors the pytest configuration.
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.
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.
04 Mar 2015
BB Pull Request #119: Restore writing ofsetup_requires to metadata(previously added in 8.4 and removed in 9.0).
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.
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.
10 Feb 2015
BB Pull Request #118: Soften warning for non-normalized versions inDistribution.
26 Jan 2015
Issue #339: Correct Attribute reference incant_write_to_target.
Issue #336: Deprecatedez_setup.use_setuptools.
20 Jan 2015
Issue #335: Fix script header generation on Windows.
18 Jan 2015
Fixed incorrect class attribute ininstall_scripts. Tests would be nice.
18 Jan 2015
Issue #331: Fixedinstall_scripts command on Windows systems corruptingthe header.
16 Jan 2015
Restoresetuptools.command.easy_install.sys_executable for pbrcompatibility. For the future, tools should construct a CommandSpecexplicitly.
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).
06 Jan 2015
Issue #327: Formalize and restore support for any printable character in anentry point name.
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))()
05 Jan 2015
Pip #2326: Report deprecation warning at stacklevel 2 for easier diagnosis.
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.
02 Jan 2015
Interop #3: Upgrade toPackaging 15.0; updates toPEP 440 so that >1.7 doesnot exclude 1.7.1 but does exclude 1.7.0 and 1.7.0.post1.
02 Jan 2015
Issue #323: Fix regression in entry point name parsing.
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.
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).
30 Dec 2014
Issue #319: Fixed issue installing pure distutils packages.
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.
29 Dec 2014
Prefer vendored packaging libraryas recommended.
29 Dec 2014
Issue #312: Restored presence of pkg_resources API tests (doctest) to sdist.
28 Dec 2014
Issue #314: Disabled support forsetup_requires metadata to avoid issuewhere Setuptools was unable to upgrade over earlier versions.
26 Dec 2014
BB Pull Request #106: Now writesetup_requires metadata.
24 Dec 2014
Issue #311: Decoupled pkg_resources from setuptools once again.pkg_resources is now a package instead of a module.
18 Dec 2014
Issue #306: Suppress warnings about Version format except in select scenarios(such as installation).
18 Dec 2014
BB Pull Request #85: Search egg-base when adding egg-info to manifest.
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.
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.
15 Dec 2014
Issue #296: Restored support for__hash__ on parse_version results.
14 Dec 2014
Issue #296: Restored support for__getitem__ and sort operations onparse_version result.
13 Dec 2014
Issue #296: Restore support for iteration over parse_version result, butdeprecated that usage with a warning. Fixes failure with buildout.
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.
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.
11 Oct 2014
Issue #268: When resolving package versions, a VersionConflict now reportswhich package previously required the conflicting version.
29 Sep 2014
Issue #262: Fixed regression in pip install due to egg-info directoriesbeing omitted. Re-opensIssue #118.
27 Sep 2014
Issue #259: Fixed regression with namespace package handling onsingleversion,externallymanaged installs.
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.
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.
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.
14 Aug 2014
Issue #242: Use absolute imports in svn_utils to avoid issues if theinstalling package adds an xml module to the path.
10 Aug 2014
Issue #239: Fix typo in 5.5 such that fix did not take.
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.
01 Aug 2014
Issue #236: Corrected regression in execfile implementation for Python 2.6.
06 Jul 2014
Python #7776: (ssl_support) Correct usage of host for validation whentunneling for HTTPS.
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.
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.
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.
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.
15 Jun 2014
Issue #220: Restored script templates.
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.
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.
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.
Issue #210:setup.pydevelop now copies scripts in binary mode ratherthan text mode, matching the behavior of theinstall command.
01 Jun 2014
ExtendIssue #197 workaround to include all Python 3 versions prior to3.2.2.
28 May 2014
Issue #193: Improved handling of Unicode filenames when building manifests.
07 May 2014
Issue #203: Honor proxy settings for Powershell downloader in the bootstraproutine.
07 May 2014
Issue #168: More robust handling of replaced zip files and stale caches.Fixes ZipImportError complaining about a ‘bad local header’.
04 May 2014
Issue #199: Restoredinstall._install for compatibility with earlierNumPy versions.
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).
11 Apr 2014
Issue #184: Correct failure where find_package over-matched packageswhen directory traversal isn’t short-circuited.
07 Apr 2014
Issue #183: Really fix test command with Python 3.1.
06 Apr 2014
Issue #183: Fix additional regression in test command on Python 3.1.
30 Mar 2014
Issue #180: Fix regression in test command not caught by py.test-run tests.
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.
16 Mar 2014
Addinclude parameter tosetuptools.find_packages().
14 Mar 2014
BB Pull Request #39: Add support for C++ targets from Cython.pyx files.
Issue #162: Update dependency on certifi to 1.0.1.
Issue #164: Update dependency on wincertstore to 0.2.
08 Mar 2014
Issue #161: Restore Features functionality to allow backward compatibility(for Features) until the uses of that functionality is sufficiently removed.
06 Mar 2014
Correct typo in previous bugfix.
06 Mar 2014
Issue #157: Restore support for Python 2.6 in bootstrap script wherezipfile.ZipFile does not yet have support for context managers.
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.
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.
05 Feb 2014
Issue #144: Read long_description using codecs module to avoid errorsinstalling on systems where LANG=C.
05 Feb 2014
Issue #139: Fix regression in re_finder for CVS repos (and maybe Git reposas well).
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.
29 Dec 2013
Fix NameError during installation with Python implementations (e.g. Jython)not containing parser module.
Fix NameError insdist:re_finder.
15 Dec 2013
Issue #124: Fixed error in list detection in upload_docs.
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.
01 Dec 2013
Issue #116: Correct TypeError when reading a local package index on Python3.
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.
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.
09 Nov 2013
Issue #99: Fix filename encoding issues in SVN support.
07 Nov 2013
Remove exuberant warning in SVN support when SVN is not used.
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).
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.
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.
18 Sep 2013
Distribute #349:sandbox.execfile now opens the target file in binarymode, thus honoring a BOM in the file when compiled.
12 Sep 2013
Issue #69: Second attempt at fix (logic was reversed).
07 Sep 2013
Issue #77: Fix error in upload command (Python 2.4).
06 Sep 2013
Fix NameError in previous patch.
06 Sep 2013
Issue #69: Correct issue where 404 errors are returned for URLs withfragments in them (such as #egg=).
03 Sep 2013
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.
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.
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.
25 Jul 2013
Issue #53: Fix NameErrors in_vcs_split_rev_from_url.
22 Jul 2013
17 Jul 2013
Issue #44: Test failure on Python 2.4 when MD5 hash doesn’t have a.nameattribute.
15 Jul 2013
Python #17980: Fix security vulnerability in SSL certificate validation.
15 Jul 2013
Issue #43: Fix issue (introduced in 0.9.1) with version resolution whenupgrading over other releases of Setuptools.
15 Jul 2013
Issue #42: Fix newAttributeError introduced in last fix.
15 Jul 2013
Issue #42: Fix regression where blank checksums would trigger anAttributeError.
13 Jul 2013
Distribute #386: Allow other positional and keyword arguments to os.open.
Corrected dependency on certifi mis-referenced in 0.9.
13 Jul 2013
package_index now validates hashes other than MD5 in download links.
05 Jul 2013
Code base now runs on Python 2.4 - Python 3.3 without Python 2to3conversion.
04 Jul 2013
Distribute #375: Yet another fix for yet another regression.
02 Jul 2013
Distribute #375: Repair AttributeError created in last release (redo).
Issue #30: Added test for get_cache_path.
02 Jul 2013
Distribute #375: Repair AttributeError created in last release.
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.
19 Jun 2013
Issue #20: Fix comparison of parsed SVN version on Python 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.
09 Jun 2013
03 Jun 2013
Fix NameError (Issue #3) again - broken in bad merge.
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.
Issue #3: Fixed NameError in SSL support.
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.
02 Jul 2013
Correct AttributeError inResourceManager.get_cache_path introduced in0.6.46 (redo).
02 Jul 2013
Correct AttributeError inResourceManager.get_cache_path introduced in0.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.
29 May 2013
Distribute #379:distribute_setup.py now traps VersionConflict as well,restoring ability to upgrade from an older setuptools version.
28 May 2013
distribute_setup.py has been updated to allow Setuptools 0.7 tosatisfy use_setuptools.
24 May 2013
Distribute #378: Restore support for Python 2.4 Syntax (regression in 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).
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.
14 May 2013
Distribute #376: brought back cli.exe and gui.exe that were deleted in theprevious release.
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.
05 May 2013
Distribute #371: The launcher manifest file is now installed properly.
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.
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.
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.
30 Dec 2012
Distribute #341: 0.6.33 fails to build under Python 2.4.
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.
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.
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.
22 Oct 2012
Distribute #328: Clean up temporary directories in distribute_setup.py.
Fix fatal bug in distribute_setup.py.
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.
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.
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)
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.
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.
14 Oct 2011
Distribute #249: Added options to exclude 2to3 fixers
22 Sep 2011
Distribute #244: Fixed a test
Distribute #243: Fixed a test
Distribute #239: Fixed a test
Distribute #240: Fixed a test
Distribute #241: Fixed a test
Distribute #237: Fixed a test
Distribute #238: easy_install now uses 64bit executable wrappers on 64bit Python
Distribute #208: Fixed parsed_versions, it now honors post-releases as noted in the documentation
Distribute #207: Windows cli and gui wrappers pass CTRL-C to child python process
Distribute #227: easy_install now passes its arguments to setup.py bdist_egg
Distribute #225: Fixed a NameError on Python 2.5, 2.4
20 Aug 2011
Distribute #225: FIxed a regression on py2.4
18 Aug 2011
Distribute #135: Include url in warning when processing URLs in package_index.
Distribute #212: Fix issue where easy_instal fails on Python 3 on windows installer.
Distribute #213: Fix typo in documentation.
02 Jun 2011
Distribute #206: AttributeError: ‘HTTPMessage’ object has no attribute ‘getheaders’
01 Jun 2011
Distribute #210: Fixed a regression introduced byDistribute #204 fix.
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.
28 Apr 2011
Builds sdist gztar even on Windows (avoidingDistribute #193).
Distribute #192: Fixed metadata omitted on Windows when package_dirspecified with forward-slash.
Distribute #195: Cython build support.
Distribute #200: Issues with recognizing 64-bit packages on Windows.
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.
15 Jul 2010
Distribute #170: Fixed unittest failure. Thanks to Toshio.
Distribute #171: Fixed race condition in unittests cause deadlocks in test suite.
Distribute #143: Fixed a lookup issue with easy_install.Thanks to David and Zooko.
Distribute #174: Fixed the edit mode when its used with setuptools itself
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
06 May 2010
Distribute #149: Fixed various failures on 2.3/2.4
06 May 2010
Found another case of SandboxViolation - fixed
Distribute #15 andDistribute #48: Introduced a socket timeout of 15 seconds on url openings
Added indexsidebar.html into MANIFEST.in
Distribute #108: Fixed TypeError with Python3.1
Distribute #121: Fixed –help install command trying to actually install.
Distribute #112: Added an os.makedirs so that Tarek’s solution will work.
Distribute #133: Added –no-find-links to easy_install
Added easy_install –user
Distribute #100: Fixed develop –user not taking ‘.’ in PYTHONPATH into account
Distribute #134: removed spurious UserWarnings. Patch by VanLindberg
Distribute #138: cant_write_to_target error when setup_requires is used.
Distribute #147: respect the sys.dont_write_bytecode flag
12 Dec 2009
Reverted change made for the DistributionNotFound exception becausezc.buildout uses the exception message to get the name of thedistribution.
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.
01 Nov 2009
Added “check_packages” in dist. (added in Setuptools 0.6c11)
Fixed the DONT_PATCH_SETUPTOOLS state.
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
15 Oct 2009
Unified the bootstrap file so it works on both py2.x and py3k without 2to3(patch by Holger Krekel)
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.
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.
27 Sep 2009
Fixed a bunch of calls to file() that caused crashes on Python 3.
Fixed a bug in sorting that caused bootstrap to fail on Python 3.
26 Sep 2009
Added Python 3 support; see docs/python3.txt.This closesOld Setuptools #39.
Added option to run 2to3 automatically when installing on Python 3.This closes issueDistribute #31.
Fixed invalid usage of requirement.parse, that broke develop -d.This closesOld Setuptools #44.
Fixed script launcher for 64-bit Windows.This closesOld Setuptools #2.
KeyError when compiling extensions.This closesOld Setuptools #41.
Fixed bootstrap not working on Windows. This closes issueDistribute #49.
Fixed 2.6 dependencies. This closes issueDistribute #50.
Make sure setuptools is patched when running through easy_installThis closesOld Setuptools #40.
08 Sep 2009
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.
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.
09 Aug 2009
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.
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.
Immediately close all file handles. This closesDistribute #3.
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 in
install_requiresif they were also used forsetup_requiresortests_require.Fixed not fetching eggs in
install_requireswhen running tests.Allow
ez_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 deprecated
md5module ifhashlibis availableFixed
bdist_wininstuploadtrying to upload the.exetwiceFixed
bdist_eggputting anative_libs.txtin 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 an
ImportErrorloading theC-based module, instead of getting aNameError).Fixed
win32.exesupport 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-commandsand 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,.dlland.sofiles executable when unpacking eggsChanges for Jython compatibility
Improved error message when a requirement is also a directory name, but thespecified directory is not a source package.
Fixed
--allow-hostsoption blockingfile:URLsFixed 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.executableis a script.Removed use of deprecated
md5module ifhashlibis availableKeep site directories (e.g.
site-packages) from being included in.pthfiles.
Fixed
distutils.filelist.findall()crashing on broken symlinks, andegg_infocommand failing on new, uncommitted SVN directories.Fix import problems with nested namespace packages installed via
--rootor--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-urlis nowhttps://pypi.python.org/simple, to usethe Python Package Index’s new simpler (and faster!) REST API.
Added
--egg-pathoption todevelopcommand, allowing you to force.egg-linkfiles 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.exescript wrappers, when therewas whitespace inside a quoted argument or at the end of the#!line(a regression introduced in 0.6c4).Fix
testcommand possibly failing if an older version of the projectbeing tested was installed onsys.pathahead of the test sourcedirectory.Fix
find_packages()treatingez_setupand 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-okflag, to allow building eggs from projectsinstalled usingsetup.pydevelop.Fixed not HTML-decoding URLs scraped from web pages
Fix uploaded
bdist_rpmpackages being described asbdist_eggpackages under Python versions less than 2.5.Fix uploaded
bdist_wininstpackages being described as suitable for“any” version by Python 2.5, even if a--target-versionwas specified.Fixed
.dllfiles on Cygwin not having executable permissions when an eggis installed unzipped.
Overhauled Windows script wrapping to support
bdist_wininstbetter.Scripts installed withbdist_wininstwill always use#!python.exeor#!pythonw.exeas 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).Fix
uploadcommand not uploading files built bybdist_rpmorbdist_wininstunder Python 2.3 and 2.4.Add support for “eggsecutable” headers: a
#!/bin/shscript that isprepended to an.eggfile 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.4
entriesfilesUse cross-platform relative paths in
easy-install.pthwhen doingdevelopand 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 the
setup()listed a namespace packagefoo.barwithout explicitly listingfooas a namespace package.Added support for HTTP “Basic” authentication using
http://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 recognizing
win32.exeinstallers that included a custombitmap.Fixed not allowing
os.open()of paths outside the sandbox, even if theyare opened read-only (e.g. reading/dev/urandomfor random numbers, asis done byos.urandom()on some platforms).Fixed a problem with
.pthtesting on Windows whensys.executablehas a space in it (e.g., the user installed Python to aProgramFilesdirectory).
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.
The
ez_setupmodule displays the conflicting version of setuptools (andits installation location) when a script requests a version that’s notavailable.Running
setup.pydevelopon 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.)
The
ez_setup.pyscript now actually works when you put a setuptools.eggalongside it for bootstrapping an offline machine.A writable installation directory on
sys.pathis no longer required todownload and extract a source distribution using--editable.Generated scripts now use
-xon the#!line whensys.executablecontains non-ASCII characters, to prevent deprecation warnings about anunspecified encoding when the script is run.
Fixed
AttributeErrorwhen trying to download asetup_requiresdependency when a distribution lacks adependency_linkssetting.Made
zip-safeandnot-zip-safeflag files contain a single byte, soas to play better with packaging tools that complain about zero-lengthfiles.Made
setup.pydeveloprespect the--no-depsoption, which itpreviously was ignoring.Support
extra_pathoption tosetup()wheninstallis run inbackward-compatibility mode.Source distributions now always include a
setup.cfgfile that explicitlysetsegg_infooptions 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 the
User-Agentstring sent to websites it visits.
Fix
registernot obeying name/version set byegg_infocommand, ifegg_infowasn’t explicitly run first on the same command line.Added
--no-dateand--no-svn-revisionoptions toegg_infocommand, to allow suppressing tags configured insetup.cfg.Fixed redundant warnings about missing
READMEfile(s); it should nowappear only if you are actually a source distribution.Fix creating Python wrappers for non-Python scripts
Fix
ftp://directory listing URLs from causing a crash when used in the“Home page” or “Download URL” slots on PyPI.Fix
sys.path_importer_cachenot being updated when an existing zipfileor directory is deleted/overwritten.Fix not recognizing HTML 404 pages from package indexes.
Allow
file://URLs to be used as a package index. URLs that refer todirectories will use an internally-generated directory listing if there isnoindex.htmlfile in the directory.Allow external links in a package index to be specified using
rel="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.
Fix
bdist_eggnot including files in subdirectories of.egg-info.Allow
.pyfiles found by theinclude_package_dataoption to beautomatically included. Remove duplicate data file matches if bothinclude_package_dataandpackage_dataare used to refer to the samefiles.Fix local
--find-linkseggs not being copied except with--always-copy.Fix sometimes not detecting local packages installed outside of “site”directories.
Fix mysterious errors during initial
setuptoolsinstall, caused byez_setuptrying to runeasy_installtwice, due to a code fallthruafter deleting the egg from which it’s running.
Don’t install or update a
site.pypatch when installing to aPYTHONPATHdirectory with--multi-version, unless aneasy-install.pthfile is already in use there.Construct
.pthfile paths in such a way that installing an egg whosename begins withimportdoesn’t cause a syntax error.Fixed a bogus warning message that wasn’t updated since the 0.5 versions.
Strip
modulefrom the end of compiled extension modules when computingthe name of a.pyloader/wrapper. (Python’s import machinery ignoresthis suffix when searching for an extension module.)Better ambiguity management: accept
#eggname/version even if processingwhat appears to be a correctly-named distutils file, and ignore.eggfiles with no-, since valid Python.eggfiles always have a versionnumber (but Scheme eggs often don’t).Support
file://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.
Added
test_loaderkeyword to support custom test loadersAdded
setuptools.file_findersentry point group to allow implementingrevision control plugins.Added
--identityoption touploadcommand.Added
dependency_linksto allow specifying URLs for--find-links.Enhanced test loader to scan packages as well as modules, and call
additional_tests()if present to get non-unittest tests.Support namespace packages in conjunction with system packagers, by omittingthe installation of any
__init__.pyfiles for namespace packages, andadding a special.pthfile to create a working package insys.modules.Made
--single-version-externally-managedautomatic when--rootisused, so that most system packagers won’t require special support forsetuptools.Fixed
setup_requires,tests_require, etc. not usingsetup.cfgorother configuration files for their option defaults when installing, andalso made the install use--multi-versionmode so that the projectdirectory doesn’t need to support .pth files.
MANIFEST.inis 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.Process
dependency_links.txtif found in a distribution, by adding theURLs to the list for scanning.Use relative paths in
.pthfiles when eggs are being installed to thesame directory as the.pthfile. This maximizes portability of thetarget directory when building applications that contain eggs.Added
easy_install-N.Nscript(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-conflictingand--ignore-conflicts-at-my-riskoptionsare 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.
Fixed the
developcommand ignoring--find-links.Added exhaustive testing of the install directory, including a spawn testfor
.pthfile support, and directory writability/existence checks. Thisshould virtually eliminate the need to set or configure--site-dirs.Added
--prefixoption for more do-what-I-mean-ishness in the absence ofRTFM-ing. :)Enhanced
PYTHONPATHsupport so that you don’t have to put any eggs on itmanually to make it work.--multi-versionis no longer a silentdefault; you must explicitly use it if installing to a non-PYTHONPATH,non-“site” directory.Expand
$variablesused in the--site-dirs,--build-directory,--install-dir, and--script-diroptions, 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’s
install_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
.pyfiles and wrap them in an egg,as long as you include an#egg=name-versionsuffix on the URL, or ifthe.pyfile 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-copyoption 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-linksoption 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--updateor-Uoption.Fixed the annoying
--help-commandswart.
The
sdistcommand no longer uses the traditionalMANIFESTfile tocreate source distributions.MANIFEST.inis still read and processed,as are the standard defaults and pruning. But the manifest is built insidethe project’s.egg-infodirectory asSOURCES.txt, and it is rebuiltevery time theegg_infocommand is run.Added the
include_package_datakeyword tosetup(), allowing you toautomatically include any package data listed in revision control orMANIFEST.inAdded the
exclude_package_datakeyword tosetup(), allowing you totrim back files included via thepackage_dataandinclude_package_dataoptions.Fixed
--tag-svn-revisionnot working when run from a sourcedistribution.Added warning for namespace packages with missing
declare_namespace()Added
tests_requirekeyword tosetup(), so that e.g. packagesrequiringnoseto run unit tests can make this dependency optionalunless thetestcommand is run.Made all commands that use
easy_installrespect its configurationoptions, as this was causing some problems withsetup.pyinstall.Added an
unpack_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 internal
install_egg_infocommand to use as part of old-styleinstalloperations, that installs an.egg-infodirectory with thepackage.Added a
--single-version-externally-managedoption to theinstallcommand so that you can more easily wrap a “flat” egg in a system package.Enhanced
bdist_rpmso that it installs single-version eggs thatdon’t rely on a.pthfile. The--no-eggoption has been removed,since all RPMs are now built in a more backwards-compatible format.Support full roundtrip translation of eggs to and from
bdist_wininstformat. Runningbdist_wininston 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_installcan turn the .exeback into an.eggfile or directory and install it as such.Fixed
.pthfile processing picking up nested eggs (i.e. ones inside“baskets”) when they weren’t explicitly listed in the.pthfile.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 from
bdist_wininstformat. Runningbdist_wininston 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_installcan turn the .exeback into an.eggfile or directory and install it as such.
Fixed some problems building extensions when Pyrex was installed, especiallywith Python 2.4 and/or packages using SWIG.
Made
developcommand accept all the same options aseasy_install,and use theeasy_installcommand’s configuration settings as defaults.Made
egg_info--tag-svn-revisionfall back to extracting the revisionnumber fromPKG-INFOin case it is being run on a source distribution ofa snapshot taken from a Subversion-based project.Automatically detect
.dll,.soand.dylibfiles that are beinginstalled as data, adding them tonative_libs.txtautomatically.Fixed some problems with fresh checkouts of projects that don’t include
.egg-info/PKG-INFOunder revision control and put the project’s sourcecode directly in the project directory. If such a package had anyrequirements that get processed before theegg_infocommand 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_infocommand).Update for changed SourceForge mirror format
Fixed not installing dependencies for some packages fetched via Subversion
Fixed dependency installation with
--always-copynot 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.
Fixed not being able to install Windows script wrappers using Python 2.3
Added support for “traditional” PYTHONPATH-based non-root installation, andalso the convenient
virtual-python.pyscript, based on a contributionby Ian Bicking. The setuptools egg now contains a hackedsitemodulethat makes the PYTHONPATH-based approach work with .pth files, so that youcan get the full EasyInstall feature set on such installations.Added
--no-depsand--allow-hostsoptions.Improved Windows
.exescript 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.
Fixed missing gui/cli .exe files in distribution. Fixed bugs in tests.
Added
gui_scriptsentry 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 running
easy_install. Removed the ability to run viapython-mor byrunningeasy_install.py;easy_installis 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.
Added
console_scriptsentry point group to allow installing scriptswithout the need to create separate script files. On Windows, consolescripts get an.exewrapper 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 use
setuptoolsand define appropriate entry points. On Windows, consolescripts get an.exewrapper so you can just type their name. On otherplatforms, the scripts are installed without a file extension.Using
python-measy_installor runningeasy_install.pyis nowDEPRECATED, since aneasy_installwrapper is now available on allplatforms.
Added support for building “old-style” RPMs that don’t install an egg forthe target package, using a
--no-eggoption.The
build_extcommand 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.The
uploadcommand no longer attaches an extra.zipwhen uploadingeggs, as PyPI now supports egg uploads without trickery.The
ez_setupscript/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-revisionoption ofegg_infonot finding thelatest revision number; it was using the revision number of the directorycontainingsetup.py, not the highest revision number in the project.Added
eager_resourcessetup argumentThe
sdistcommand now recognizes Subversion “deleted file” entries anddoes not include them in source distributions.
setuptoolsnow 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.Added
entry_pointsandsetup_requiresarguments tosetup();setup_requiresallows you to automatically find and download packagesthat are needed in order tobuild your project (as opposed to running it).
setuptoolsnow 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 vestigial
dependscommand 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
.eggfilenames,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
.pycor.pyofiles for scripts with.pyextensions.Added
--site-dirsoption to allow adding custom “site” directories.Madeeasy-install.pthwork in platform-specific alternate sitedirectories (e.g.~/Library/Python/2.x/site-packageson 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 the
easy-install.pthfile.EasyInstall now recognizes URLs with a
#egg=project_namefragment 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--editableoption. The#eggfragment can contain a version if it’s formatted as#egg=proj-ver,whereprojis the project name, andveris the version number. Youmust use the format for these values that thebdist_eggcommand uses;i.e., all non-alphanumeric runs must be condensed to single underscorecharacters.Added the
--editableoption; see Editing and Viewing Source Packagesin the docs. Also, slightly changed the behavior of the--build-directoryoption.Fixed the setup script sandbox facility not recognizing certain paths asvalid on case-insensitive platforms.
The zip-safety scanner now checks for modules that might be used with
python-m, and marks them as unsafe for zipping, since Python 2.4 can’thandle-mon zipped modules.Fix
python-measy_installnot working due to setuptools being installedas a zipfile. Update safety scanner to check for modules that might be usedaspython-mscripts.Misc. fixes for win32.exe support, including changes to support Python 2.4’schanged
bdist_wininstformat.
Fix breakage of the “develop” command that was caused by the addition of
--always-unzipto theeasy_installcommand.
Put the
easy_installmodule back in as a module, as it’s needed forpython-mto run it!Allow
--find-links/-fto accept local directories or filenames as wellas URLs.
Include
svn:externalsdirectories in source distributions as well asnormal subversion-controlled files and directories.Added
exclude=patternlistoption 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-filesoption tobdist_egg.
setup.pyinstallnow automatically detects when an “unmanaged” packageor module is going to be onsys.pathahead 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-conflictingoption) to do it automatically.The
egg_infocommand now adds atop_level.txtfile to the metadatadirectory that lists all top-level modules and packages in the distribution.This is used by theeasy_installcommand to find possibly-conflicting“unmanaged” packages when installing the distribution.Added
zip_safeandnamespace_packagesarguments tosetup().Added package analysis to determine zip-safety if thezip_safeflagis not given, and advise the author regarding what code might need changing.Fixed the swapped
-dand-boptions ofbdist_egg.EasyInstall now automatically detects when an “unmanaged” package ormodule is going to be on
sys.pathahead 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-conflictingand--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.)The
easy_installdistutils command now usesDistutilsErroras 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/-Zoption, to force unzipping of packages thatwould ordinarily be considered safe to unzip, and changed the meaning of--zip-ok/-zto “always leave everything zipped”.
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.
Added “upload” support for egg and source distributions, including a bugfix for “upload” and a temporary workaround for lack of .egg support inPyPI.
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
-nor--dry-run.Slightly changed the format of the generated version when you use
--tag-buildon the “egg_info” command, so that you can make taggedrevisions comparelower than the version specified in setup.py (e.g. byusing--tag-build=dev).
Added
developcommand tosetuptools-based packages. This commandinstalls an.egg-linkpointing 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.)Added
egg_infocommand 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 the
testcommand 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-packagesor elsewhere.Made
easy_installa standardsetuptoolscommand, moving it fromtheeasy_installmodule tosetuptools.command.easy_install. Notethat if you were importing or extending it, you must now change your importsaccordingly.easy_install.pyis still installed as a script, but not asa module.
Setup scripts using setuptools can now list their dependencies directly inthe setup.py file, without having to manually create a
depends.txtfile.Theinstall_requiresandextras_requirearguments tosetup()are used to create a dependencies file automatically. If you are manuallycreatingdepends.txtright now, please switch to using these setuparguments as soon as practical, becausedepends.txtsupport will beremoved in the 0.6 release cycle. For documentation on the new arguments,see thesetuptools.dist.Distributionclass.Setup scripts using setuptools now always install using
easy_installinternally, for ease of uninstallation and upgrading.Added
--always-copy/-aoption 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/-Uoption 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’s
EGG-INFOdirectory, 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
--recordoption toeasy_installfor the benefit of toolsthat runsetup.pyinstall--record=filenameon behalf of anotherpackaging system.)
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.
Fix stupid stupid refactoring-at-the-last-minute typos. :(
Added support for “self-installation” bootstrapping. Packages can nowinclude
ez_setup.pyin 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.exeinstallers 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)
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).
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.)
Added
ez_setup.pyinstaller/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 the
PackageIndexclass (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_indexmodule.The
Installerclass no longer handles downloading, manages a temporarydirectory, or tracks thezip_okoption. Downloading is now handledbyPackageIndex, andInstallerhas become aneasy_installcommand class based onsetuptools.Command.There is a new
setuptools.sandbox.run_setup()API to invoke a setupscript in a directory sandbox, and a newsetuptools.archive_utilmodulewith anunpack_archive()API. These were split out of EasyInstall toallow reuse by other tools and applications.
setuptools.Commandnow supports reinitializing commands using keywordarguments to set/reset options. Also,Commandsubclasses can now settheircommand_consumes_argumentsattribute toTruein order toreceive anargsoption 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/-sto--find-links/-fto free up-sfor thescript installation directory option.Use
urllib2instead ofurllib, to allow use ofhttps:URLs ifPython includes SSL support.
Added
--scan-urland--index-urloptions, to scan download pagesand search PyPI for needed packages.
Restrict
--build-directory=DIR/-bDIRoption to only be used with singleURL installs, to avoid running the wrong setup.py.
Added
--build-directory=DIR/-bDIRoption.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 quirky
install_datahacks
Added new options to
bdist_eggto allow tagging the egg’s version numberwith a subversion revision number, the current date, or an explicit tagvalue. Runsetup.pybdist_egg--helpto get more information.Added subversion download support for
svn:andsvn+URLs, as well asautomatic recognition of HTTP subversion URLs (Contributed by Ian Bicking)Misc. bug fixes
Initial release.
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).