No application developer will quickly figure out what a tilde means. Maybe it means 'roughly', but it requires too much thought and is ambiguous. 2.5 is not roughly 2.5.2. It is the same exactly.
Before we had : Requires-Python: 2.5, 2.6
That made much more sense. It was simple and unambiguous, and is relevant to typical packaging scenarios.
Unfortunately, it is fairly ambiguous, and makes no sense. It means "requires Python 2.5 *AND* requires Python 2.6", which is a requirement that no single version can meet.
No, it means a library requires either python 2.5 *OR* python 2.6 to be installed properly.
Well, the PEP says that the comma means "and", see
If the comma would mean "or", then what would ">1.0, !=1.3.4, <2.0" mean?
above 1.0 OR unequal to 1.3.4 OR below 2.0
That would mean that *any* version would match that spec, and then the spec would be meaningless. If that's not clear, ask whether 4.0 would match: yes, it would, because it's >1.0. What about 0.9: yes, it's <2.0.