+1
Having read this exchange and the PY3K mailing list thread on sets, it seems that the actual decision that caused this topic was the addition of the literal set syntax ({…, …}) in Python 3, and from what I can sense here, it’s likely that the same people opposing any literal syntax for an empty set now would have opposed that decision as well.
So the underlying question then, is purely one of consistency in the language itself: Are sets meant to be seen as “first-class” data structures in the Python programming language, in the same way that tuples, lists and dicts are?
To explain the idea behind “first-class”, I’m leaning into how the average beginner sees Python code: A programming language that is easy to understand because it reads like English, which also happens to be the dominant language used in published computer science concepts worldwide (and which eventually includes writing sets literally with curly braces). From that perspective, I definitely think it’s a win to have added the syntax, given how it leverages an intuition people already know from set theory, as a means to suggest that the use of efficient data structures for membership testing in dynamic code is so well recommended by the language itself, that is in fact part of the language’s grammar as a literal set (and thus implied to be ‘first-class’, just like tuples, lists and dicts with their literal syntax).
So, given that the literal set syntax made its way in, why not lean into the consistency expected by that same intuition of importing set theory ideas, and add the {/} syntax for completeness sake?
IMHO, to not do so is to suggest that the initial addition of the literal syntax was a design mistake, which would at least explain the unexpected result of repr({1} & {2}) == 'set()' to a beginner. It’s a valid path that would only need a docs change to discourage literal set use, but it’s also not a desirable one for those who actually use sets frequently in their code.
Zooming out, I think there were only ever 3 possible timelines:
{:} and {/} were added together
{:} was added first for dicts, so {} remains for sets
{} was added first for dicts, so {/} remains for sets
We’re already on timeline 3, so the obvious path is to approve the addition of {/}.
Generalizing / on a language level under the notion of a ‘position intentionally held blank’ can be done later.