| """Starlark representation of locked requirements. |
| |
| @generated by rules_python pip_parse repository rule |
| from %%REQUIREMENTS_LOCK%% |
| """ |
| |
| %%IMPORTS%% |
| |
| all_requirements = %%ALL_REQUIREMENTS%% |
| |
| all_whl_requirements_by_package = %%ALL_WHL_REQUIREMENTS_BY_PACKAGE%% |
| |
| all_whl_requirements = all_whl_requirements_by_package.values() |
| |
| all_data_requirements = %%ALL_DATA_REQUIREMENTS%% |
| |
| _packages = %%PACKAGES%% |
| _config = %%CONFIG%% |
| _annotations = %%ANNOTATIONS%% |
| |
| def requirement(name): |
| return "%%MACRO_TMPL%%".format(pip_utils.normalize_name(name), "pkg") |
| |
| def whl_requirement(name): |
| return "%%MACRO_TMPL%%".format(pip_utils.normalize_name(name), "whl") |
| |
| def data_requirement(name): |
| return "%%MACRO_TMPL%%".format(pip_utils.normalize_name(name), "data") |
| |
| def dist_info_requirement(name): |
| return "%%MACRO_TMPL%%".format(pip_utils.normalize_name(name), "dist_info") |
| |
| def entry_point(pkg, script = None): |
| if not script: |
| script = pkg |
| return "@%%NAME%%_" + pip_utils.normalize_name(pkg) + "//:rules_python_wheel_entry_point_" + script |
| |
| def _get_annotation(requirement): |
| # This expects to parse `setuptools==58.2.0 --hash=sha256:2551203ae6955b9876741a26ab3e767bb3242dafe86a32a749ea0d78b6792f11` |
| # down to `setuptools`. |
| name = requirement.split(" ")[0].split("=")[0].split("[")[0] |
| return _annotations.get(name) |
| |
| def install_deps(**whl_library_kwargs): |
| """Repository rule macro. Install dependencies from `pip_parse`. |
| |
| Args: |
| **whl_library_kwargs: Additional arguments which will flow to underlying |
| `whl_library` calls. See pip_repository.bzl for details. |
| """ |
| |
| # Set up the requirement groups |
| all_requirement_groups = %%ALL_REQUIREMENT_GROUPS%% |
| |
| requirement_group_mapping = { |
| requirement: group_name |
| for group_name, group_requirements in all_requirement_groups.items() |
| for requirement in group_requirements |
| } |
| |
| group_repo = "%%NAME%%__groups" |
| group_library( |
| name = group_repo, |
| repo_prefix = "%%NAME%%_", |
| groups = all_requirement_groups, |
| ) |
| |
| # Install wheels which may be participants in a group |
| whl_config = dict(_config) |
| whl_config.update(whl_library_kwargs) |
| |
| for name, requirement in _packages: |
| group_name = requirement_group_mapping.get(name.replace("%%NAME%%_", "")) |
| group_deps = all_requirement_groups.get(group_name, []) |
| |
| whl_library( |
| name = name, |
| requirement = requirement, |
| group_name = group_name, |
| group_deps = group_deps, |
| annotation = _get_annotation(requirement), |
| **whl_config |
| ) |