HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
pypa
setuptools
Python2017–2026
pypa / setuptools

setuptools

Official project repository for the Setuptools build system

30Distinct people
38Mentions
0Explicit recommenders
2.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Official project repository for the Setuptools build system

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 2:04:58 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year38 dated mentions

Observed mentions: 2017-06-01 10:10:29 UTC to 2026-02-12 14:59:46 UTC.

0510152017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 16 mentions; 3 submissions, 13 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC211
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC514
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC202
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC312
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC716
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC16313
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC110

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
See the Quickstart and the User's Guide for instructions on how to use Setuptools. Questions and comments should be directed to GitHub Discussions. Bug reports and especially tested patches may be submitted directly to the bug tracker. Code of Conduct Everyone interacting in the setuptools project's codebases, issue trackers, chat rooms, and fora is expected to follow the PSF Code of Conduct. For Enterprise Available as part of the Tidelift Subscription. Setuptools and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use. Learn more.
Read the full README on GitHub

What Hacker News says

38 sources
Oh really? - https://github.com/pypa/packaging/issues/774 - https://github.com/pypa/setuptools/issues/3548 - https://github.com/pypa/pip/issues/7953 I relied on those for a decade, maybe two. > something no one asked for Was being a facetious, sure someone asked for it, but it was pretty dumb. This has never "corrupted" anything, is rare (not happened to me in last 15 years), and simply fixed when knowledgeable. Not everyone can simply fix it, so a better solution would be to isolate the system python, allow more than one installed, etc. Distros already do this to some extent.
In PYX: The next step in Python packaging
In Tell HN: I forked and republished a popular, abandoned Python library
zahlman·Mar 27, 2025Submission

Tell HN: I forked and republished a popular, abandoned Python library

The `stringcase` package on PyPI [0] is fairly popular, on the order of 150k daily downloads [1]. However, there has been no sign of activity since June of 2023, and that was only to merge a pull request that breaks tests. The author's own last changes appear to have been a few days after the last PyPI release, in August 2017. A wheel was never distributed, despite being a single-file Python implementation with no dependencies. (If you think that shouldn't require a build step, please read [2].) And then, like many other "legacy" projects [3] not using a `pyproject.toml` file or distributing a wheel, it failed to build under Setuptools 78.0.1 , therefore also blocking the installation of all its dependents. As a future-proofing measure, I've re-released the project as `stringcase-new` [4][5]. (As "defense in depth", I've also migrated the
Read the rest
project's packaging to Flit ;) ) The import name for Python code is untouched; if you're affected, you need only add `-new` to `stringcase` in your dependency specifications. Versioning is also intended to maintain continuity. The 1.2.2 release should behave identically to 1.2.0, just in case you need a bug-compatible version with modern packaging; 1.2.3 will incorporate the author's apparent planned fixes for 1.2.1, as well as bugfixes from the community where appropriate. I'm trying to be quite conservative with this. If you want fixes and additional functionality, and don't mind a different import name, you may prefer to switch to Casefy [6], which has become popular in its own right [7]. The process [8] for recovering names on PyPI for abandoned projects can take a very long time, but I've been encouraged to follow up on that. If I ever do get the `stringcase` name on PyPI I will rebuild the releases (to fix metadata) and make them available under the original name as well. If you know anyone with a project depending on `stringcase`, including transitively, please let them know. One major dependent is `frictionless` [9], who apparently have decided to vendor `stringcase` [10]. (Keep in mind you are not future-proofed if you pin or cap the `frictionless` version.) I'd also like to specifically thank Damian Shaw [11] of the Pip maintenance team for extraordinary efforts (e.g. [12]) in coordinating discussion (and contributions to existing discussion) around the underlying problems that allowed removal of a trivial, years-deprecated feature from Setuptools to be so disruptive. This isn't just about Setuptools' policies and abandoned projects: other build backends can learn from this, build frontends (including installers) can offer better overrides for build backend versions used in build isolation, and both sides can coordinate to make deprecation warnings more visible to developers. And hopefully, maybe, one day Setuptools will become just a build backend, like it seemingly wants to be [13]. [0]: https://pypi.org/project/stringcase [1]: https://pypistats.org/packages/stringcase [2]: https://pradyunsg.me/blog/2022/12/31/wheels-are-faster-pure-python [3]: https://github.com/pypa/setuptools/issues/4910 [4]: https://github.com/zahlman/stringcase-new [5]: https://pypi.org/project/stringcase-new [6]: https://github.com/dmlls/python-casefy [7]: https://pypistats.org/packages/casefy [8]: https://peps.python.org/pep-0541/#how-to-request-a-name-transfer [9]: https://github.com/frictionlessdata/frictionless-py [10]: https://github.com/frictionlessdata/frictionless-py/pull/1727 [11]: https://github.com/notatallshaw [12]: https://discuss.python.org/t/_/85847 [13]: https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html
12 points · Open discussion
Good essay. Counter-argument: the Python setuptools outage this week (https://github.com/pypa/setuptools/issues/4919) was more-or-less an exercise in ignoring Postel's Law to the peril of the project. Python (as an ecosystem) had historically allowed hyphens and underscores in the `setup.cfg` file. The setuptools project deprecated this behavior years ago. This week, they tried to act on the deprecation and blew up multiple high-use dependencies. The best way to avoid this issue would have been to never deprecate it in the first place; treating hyphen and underscore as the same had minimal impact on the codebase and made setuptools more compatible with other Python tooling.
In Postel's Law and the Three Ring Circus
Some more thoughts after digging in a bit further: * At first blush, the "breaks the Internet" title on Reddit seems quite histrionic. The initial bug report against Setuptools referenced a project (https://github.com/tomoh1r/ansible-vault) that has only a few dozen starts on GitHub and only a few thousand daily downloads from PyPI (https://pypistats.org/packages/ansible-vault) (compare to tens of millions for the most popular packages). [Removed a point about semver that was not well considered. It turns out that Setuptools version 78.0.0 never actually got released, despite being listed separately in the version history; the 78.0.1 patch was applied first.] * Projects that try to follow modern packaging standards - and pay attention to the basics - seem to run into far fewer problems overall. In particular, ansible-vault is using its py
Read the rest
project.toml only for tool config, and relies on both a setup.cfg and setup.py. Developers and maintainers in 2021 should have been well aware of standards like https://peps.python.org/pep-0621/, and have heard of the problems caused by setup.py-based metadata. The code is 100% Python (even Ansible itself is, as far as I can tell) so a setup.py is completely unnecessary. (Ansible includes a "dummy" setup.py "for compatibility with older tools", but the ecosystem really is supposed to have moved on from that by now.) * But none of this should have been a problem for the OP anyway, because - being 100% Python - the ansible-vault package should have been distributing a wheel (https://pradyunsg.me/blog/2022/12/31/wheels-are-faster-pure-...), but doesn't (https://pypi.org/project/ansible-vault/#files). (Yes, I did notice that Mr. Gedam published that article at the end of 2022. Education efforts about Python packaging around 2020-2021 were apparently quite lacking.) * The purpose of 78.0.1 was to "temporarily remove Requests from integration tests" (https://github.com/pypa/setuptools/pull/4909). In other words, they knew that this would break the build for Requests. Fortunately, Requests does follow good practice and publish a wheel, or there would have indeed been a problem worthy of a sensationalized title. (It's one of the most popular packages out there, and the stats don't even count the vendored copies included in Pip.) * Requests has been bitten by a Setuptools removal before, last July (https://github.com/psf/requests/issues/6775). That time, the removal was the only reason for bumping the version number, and then it got promptly restored in 72.1.0 anyway. This time, there was only a bugfix besides the one removal in 78.0.0, and now it's been undone in 78.0.2. (So undoing a removal is sometimes a minor update and sometimes a patch, interesting...) * When that problem occurred in July, I proposed that the packaging system should be modernized - and was told by a Requests maintainer that this was already planned since the previous release last May, to appear in the next minor version (2.33). But it's been almost a year and that release hasn't appeared yet. (I have to wonder what else they're planning to include...) * The history of the decision for the original deprecation (https://github.com/pypa/setuptools/issues/1608) is also rather interesting.
In Latest Setuptools broke a bunch of packages
It seems that the person who did this acted unilaterally, with no code review, and ignored (then disabled) broken tests while landing this (https://github.com/pypa/setuptools/pull/4909). One should not be too harsh - he seems to be a student. One perhaps should be more harsh on the commerical entity sponsoring the project, though - setuptools is sponsored by Sonar via "Tidelift". According to https://tidelift.com/subscription/pkg/pypi-setuptools: > The maintainers of setuptools get paid by Tidelift to > implement industry-leading secure software development > practices and document the practices they follow. Well, that really doesn't seem so in this case now, does it?
In Setuptools version 78.0.1 breaks install of many packages
The current approach of the maintainers terrifies me -- de facto standards should be respected. Even if something is invalid like `description-file`, if it is present in 12k repos it should raise a warning and not break anything. In the rationale for this that I can find [1], a maintainer says the following: > I'm inclined to say we should do it, even though it will cause some disruption. They also say an alternative is to "accept the status quo", which is exactily what they should be doing. I can't find maintainers giving a compelling reason not to support this status quo of `long-description` as an alias to `long_description` besides "simplifying code." Code simplification should never take precedence over massive breakage of compatibility. [1] https://github.com/pypa/setuptools/pull/4870#pullrequestrevi...
In Setuptools version 78.0.1 breaks install of many packages

Showing the 15 most recent of 38 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.