Firstly, I think the current behaviour of pip is definitely a bug and seems pretty fixable. Basically, it takes the egg= fragment and treats oslo.config-1.2.0a2 as the package name and installs *both* 'oslo.config-1.2.0a2' and 'oslo.config'. Simply fixing pip to strip the version from the package name in egg= fragment fixes this behaviour.
We obviously don't want to wait for pip to be fixed, thought. It looks like if we simply do:
Quick update on this
Firstly, I think the current behaviour of pip is definitely a bug and seems pretty fixable. Basically, it takes the egg= fragment and treats oslo.config-1.2.0a2 as the package name and installs *both* 'oslo.config- 1.2.0a2' and 'oslo.config'. Simply fixing pip to strip the version from the package name in egg= fragment fixes this behaviour.
We obviously don't want to wait for pip to be fixed, thought. It looks like if we simply do:
-f http:// tarballs. openstack. org/oslo. config/ oslo.config- 1.2.0a2. tar.gz# egg=oslo. config- 1.2.0a2 =1.2.0a2
oslo.config>
then that will work just fine and will mirror the semantics we actually want. I'm actually a bit perplexed as to why we haven't always done this.
One possible complication is that the gating infrastructure around the requirements repo might reject it, but that should be fixable.
Anyway, I'll continue to push work on this today and will also file a bug against pip.