tree c84fa4b54948852f6c91ed24def5a496aff38019
parent bb8c4859950ecea29e794e85df579558c9d893fd
author Richard Levasseur <rlevasseur@google.com> 1690835628 -0700
committer GitHub <noreply@github.com> 1690835628 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJkyBq8CRBK7hj4Ov3rIwAAGnoIACd9/RrAwcucnGSsaox23HqN
 DO7WjMVWHhy9lOquoD8xQ9epbls63oXvO8Awtx+zm8FUwWj9oioNhzfIZvAmG04B
 awsQRosRvQ7F7BaVUz4LpX35JmQhI0yuKg2PzMByr09IHmFhQPUGjCFa7QVMjahV
 nONvYM+fEM1np5ksbl2qVudpsorhy1+2XCIwkQu+DQ7mFg6eN5BWH+rba+7XyBh0
 X/XyJ2LRGDWLmoPKvSOaIvOSB+f4c7ODZoy6X20oWDfsEj2q1TLw9MQmvOxfMk9n
 I0vPci2e/0G4xYIFWQlddU8r8B8RJGWIUNwMHdwq/uQ1cIzCu+B6tlhO/7rTI+k=
 =gvdm
 -----END PGP SIGNATURE-----
 

fix: Don't require default Python version for pip hubs (#1344)

This fixes the issue where a sub-module was required to always have a
pip.parse() call configured for the default Python version if it used
any pip.parse() call. Such a
requirement puts sub-modules in an impossible situation:
  * If they don't have the default version, they'll get an error.
* If they register the default version, but also register a specific
version,
they'll potentially cause an error if a root module changes the default
to
match their specific version (because two pip.parse() calls for the same
version
    are made, which is an error).

The requirement to have the default version registered for a pip hub was
only present to satisfy the `whl_library_alias` repository rule, which
needed a Python version to map `//conditions:default` to.

To fix, the `whl_library_alias` rule's `default_version` arg is made
optional. When None is passed, the `//conditions:default` condition is
replaced with a `no_match_error` setting. This prevents the pip hub from
being used with the version-unaware rules, but that makes sense: no
wheels were setup for that version, so it's not like there is something
that
can be used anyways.

Fixes #1320