Handling of Pre-Releases when backtracking?

There’s one specific behaviour that pip has that could lead to looking like what you’re describing:

If a requirement specifier includes a pre-release or development version (e.g. >=0.0.dev0) then pip will allow pre-release and development versions for that requirement.

Going off of memory, pip uses pre-release versions for a package if:

  1. There are only pre-release versions for a project.
  2. The version specifier is a pre-release specifier.
  3. --pre was passed.