Honestly, the thing that I dislike about that is it takes a behavior which is
less intuitive (I do agree that the behavior of > is less intuitive) and
applies to globally. I don't think people would expect >=1.7 to match 1.7.dev0
and given that I don't think people would expect >=1.7.0 to _not_match
1.7.dev0.
I totally agree that the behavior of > isn't the greatest, I don't think the
solution to that problem is to globally apply that particular wart. The only
*reasonable* solutions I can think of are:
1. Make < and > both act as simple comparison operators, and have >1.7 and
>1.7.0 both allow 1.7.1. This would include also allowing 1.7.dev0 to be
<1.7 and <1.7.0.
2. Make < and > both act as "exclusive comparison operators", and which is
the current behavior.
3. Make < and > both act as simple comparison operators, but include a special
case that < does not ever match pre-releases of the version mentioned in
the specifier. So <3 would not match a pre-released like 3.dev0, and <3.1
would not match a pre-release like 3.1.dev0 but would match a pre-release
like 3.0.dev0.
It may be that the correct solution is to just treat pre-releases as special
and just switch to 3.