Setuptools

Latest version: v75.8.0

Safety actively analyzes 696915 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 111 of 114

0.6a1

=====

* Added support for building "old-style" RPMs that don't install an egg for
the target package, using a ``--no-egg`` option.

* The ``build_ext`` command now works better when using the ``--inplace``
option and multiple Python versions. It now makes sure that all extensions
match the current Python version, even if newer copies were built for a
different Python version.

* The ``upload`` command no longer attaches an extra ``.zip`` when uploading
eggs, as PyPI now supports egg uploads without trickery.

* The ``ez_setup`` script/module now displays a warning before downloading
the setuptools egg, and attempts to check the downloaded egg against an
internal MD5 checksum table.

* Fixed the ``--tag-svn-revision`` option of ``egg_info`` not finding the
latest revision number; it was using the revision number of the directory
containing ``setup.py``, not the highest revision number in the project.

* Added ``eager_resources`` setup argument

* The ``sdist`` command now recognizes Subversion "deleted file" entries and
does not include them in source distributions.

* ``setuptools`` now embeds itself more thoroughly into the distutils, so that
other distutils extensions (e.g. py2exe, py2app) will subclass setuptools'
versions of things, rather than the native distutils ones.

* Added ``entry_points`` and ``setup_requires`` arguments to ``setup()``;
``setup_requires`` allows you to automatically find and download packages
that are needed in order to *build* your project (as opposed to running it).

* ``setuptools`` now finds its commands, ``setup()`` argument validators, and
metadata writers using entry points, so that they can be extended by
third-party packages. See `Creating distutils Extensions
<https://setuptools.pypa.io/en/latest/setuptools.html#creating-distutils-extensions>`_
for more details.

* The vestigial ``depends`` command has been removed. It was never finished
or documented, and never would have worked without EasyInstall - which it
pre-dated and was never compatible with.

* EasyInstall now does MD5 validation of downloads from PyPI, or from any link
that 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 it
easier to set up an alternate Python "home" directory (as described in
the Non-Root Installation section of the docs).

* Added support for handling MacOS platform information in ``.egg`` filenames,
based on a contribution by Kevin Dangoor. You may wish to delete and
reinstall any eggs whose filename includes "darwin" and "Power_Macintosh",
because the format for this platform information has changed so that minor
OS X upgrades (such as 10.4.1 to 10.4.2) do not cause eggs built with a
previous 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. When
not using ``--always-copy``, it tries to use a single resolution loop,
rather than recursing.

* Fixed installing extra ``.pyc`` or ``.pyo`` files for scripts with ``.py``
extensions.

* Added ``--site-dirs`` option to allow adding custom "site" directories.
Made ``easy-install.pth`` work in platform-specific alternate site
directories (e.g. ``~/Library/Python/2.x/site-packages`` on Mac OS X).

* If you manually delete the current version of a package, the next run of
EasyInstall against the target directory will now remove the stray entry
from the ``easy-install.pth`` file.

* EasyInstall now recognizes URLs with a ``egg=project_name`` fragment ID
as pointing to the named project's source checkout. Such URLs have a lower
match precedence than any other kind of distribution, so they'll only be
used if they have a higher version number than any other available
distribution, or if you use the ``--editable`` option. The ``egg``
fragment can contain a version if it's formatted as ``egg=proj-ver``,
where ``proj`` is the project name, and ``ver`` is the version number. You
*must* use the format for these values that the ``bdist_egg`` command uses;
i.e., all non-alphanumeric runs must be condensed to single underscore
characters.

* Added the ``--editable`` option; see Editing and Viewing Source Packages
in the docs. Also, slightly changed the behavior of the
``--build-directory`` option.

* Fixed the setup script sandbox facility not recognizing certain paths as
valid on case-insensitive platforms.

0.5a12

======

* 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't
handle ``-m`` on zipped modules.

* Fix ``python -m easy_install`` not working due to setuptools being installed
as a zipfile. Update safety scanner to check for modules that might be used
as ``python -m`` scripts.

* Misc. fixes for win32.exe support, including changes to support Python 2.4's
changed ``bdist_wininst`` format.

0.5a11

======

* Fix breakage of the "develop" command that was caused by the addition of
``--always-unzip`` to the ``easy_install`` command.

0.5a10

======

* Put the ``easy_install`` module back in as a module, as it's needed for
``python -m`` to run it!

* Allow ``--find-links/-f`` to accept local directories or filenames as well
as URLs.

0.5a9

=====

* Include ``svn:externals`` directories in source distributions as well as
normal subversion-controlled files and directories.

* Added ``exclude=patternlist`` option to ``setuptools.find_packages()``

* Changed --tag-svn-revision to include an "r" in front of the revision number
for better readability.

* Added ability to build eggs without including source files (except for any
scripts, of course), using the ``--exclude-source-files`` option to
``bdist_egg``.

* ``setup.py install`` now automatically detects when an "unmanaged" package
or module is going to be on ``sys.path`` ahead of a package being installed,
thereby preventing the newer version from being imported. If this occurs,
a warning message is output to ``sys.stderr``, but installation proceeds
anyway. The warning message informs the user what files or directories
need deleting, and advises them they can also use EasyInstall (with the
``--delete-conflicting`` option) to do it automatically.

* The ``egg_info`` command now adds a ``top_level.txt`` file to the metadata
directory that lists all top-level modules and packages in the distribution.
This is used by the ``easy_install`` command to find possibly-conflicting
"unmanaged" packages when installing the distribution.

* Added ``zip_safe`` and ``namespace_packages`` arguments to ``setup()``.
Added package analysis to determine zip-safety if the ``zip_safe`` flag
is not given, and advise the author regarding what code might need changing.

* Fixed the swapped ``-d`` and ``-b`` options of ``bdist_egg``.

* EasyInstall now automatically detects when an "unmanaged" package or
module is going to be on ``sys.path`` ahead of a package you're installing,
thereby preventing the newer version from being imported. By default, it
will abort installation to alert you of the problem, but there are also
new options (``--delete-conflicting`` and ``--ignore-conflicts-at-my-risk``)
available to change the default behavior. (Note: this new feature doesn't
take effect for egg files that were built with older ``setuptools``
versions, because they lack the new metadata file required to implement it.)

* The ``easy_install`` distutils command now uses ``DistutilsError`` as its
base error type for errors that should just issue a message to stderr and
exit the program without a traceback.

* EasyInstall can now be given a path to a directory containing a setup
script, and it will attempt to build and install the package there.

* EasyInstall now performs a safety analysis on module contents to determine
whether a package is likely to run in zipped form, and displays
information about what modules may be doing introspection that would break
when running as a zipfile.

* Added the ``--always-unzip/-Z`` option, to force unzipping of packages that
would ordinarily be considered safe to unzip, and changed the meaning of
``--zip-ok/-z`` to "always leave everything zipped".

0.5a8

=====

* The "egg_info" command now always sets the distribution metadata to "safe"
forms of the distribution name and version, so that distribution files will
be generated with parseable names (i.e., ones that don't include '-' in the
name or version). Also, this means that if you use the various ``--tag``
options of "egg_info", any distributions generated will use the tags in the
version, 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 to
call the command of the same name, a given alias can be expanded only once
per 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 of
patterns to match and the number of files to keep. (Keeps the most
recently-modified distribution files matching each pattern.)

* Added "saveopts" command that saves all command-line options for the current
invocation to the local, global, or per-user configuration file. Useful for
setting defaults without having to hand-edit a configuration file.

* Added a "setopt" command that sets a single option in a specified distutils
configuration file.

* There is now a separate documentation page for setuptools; revision
history that's not specific to EasyInstall has been moved to that page.

Page 111 of 114

Links

Releases

Has known vulnerabilities

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.