[pypi] PEP508 Remove the need for Python in env_marker evaluation in hub repos
Related #2319
This is to add a parser for PEP508 in starlark and to use it in the hub_repository instead of evaluating markers with Python in the module extension evaluation phase.
This will be needed in other places as well:
- Using the same starlark parser in parsing the METADATA.
- Parsing
uv.lockand other lock files that have the marker as part of their deps. - Allowing us to push the
env_markerevaluation to the analysis phase together with the other config setting evaluation. - Allowing to properly support the full spec of PEP508 in the
whl_librarywithout exploding the number of args we need to pass towhl_library. - Allowing to create something similar to a
whl_archiverepository rule that would not depend onPythonthat we could dog-food ourselves for the repo rules that need Python at the repo phase (i.e. the currentwhl_library).