08/03/2021, 5:51 PM
Yeah, note that we say this in our docs:
This means that every dependency of a target must also be compatible with its interpreter constraints. Generally, you will want to be careful that your common python_library targets are compatible with multiple Python versions because they may be depended upon by other targets. Meanwhile, pex_binary and python_tests targets can have specific constraints because they are (conventionally) never dependencies for other targets.
But we say "can have specific constraints", not "must". I'm not sure how we'd enforce it, and it would also add new boilerplate in some cases not necessary. Like, my above example already would end up being ==3.6 b/c the transitive dep, and now you have to explicitly say that are you envisioning this change because it avoids these perf hits of looking at transitive targets? or other motivation?