aboutsummaryrefslogtreecommitdiff
path: root/examples/pip_parse_vendored/requirements.bzl
blob: adbee66cafdceb392a19795120ae28a8f44085ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
"""Starlark representation of locked requirements.

@generated by rules_python pip_parse repository rule
from //:requirements.txt
"""

load("@python39//:defs.bzl", "interpreter")
load("@rules_python//python:pip.bzl", "pip_utils")
load("@rules_python//python/pip_install:pip_repository.bzl", "group_library", "whl_library")

all_requirements = ["@pip//certifi:pkg", "@pip//charset_normalizer:pkg", "@pip//idna:pkg", "@pip//requests:pkg", "@pip//urllib3:pkg"]

all_whl_requirements_by_package = {"certifi": "@pip//certifi:whl", "charset_normalizer": "@pip//charset_normalizer:whl", "idna": "@pip//idna:whl", "requests": "@pip//requests:whl", "urllib3": "@pip//urllib3:whl"}

all_whl_requirements = all_whl_requirements_by_package.values()

all_data_requirements = ["@pip//certifi:data", "@pip//charset_normalizer:data", "@pip//idna:data", "@pip//requests:data", "@pip//urllib3:data"]

_packages = [("pip_certifi", "certifi==2023.7.22     --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082     --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"), ("pip_charset_normalizer", "charset-normalizer==2.1.1     --hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845     --hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"), ("pip_idna", "idna==3.4     --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4     --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"), ("pip_requests", "requests==2.28.1     --hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983     --hash=sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"), ("pip_urllib3", "urllib3==1.26.13     --hash=sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc     --hash=sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8")]
_config = {"download_only": False, "enable_implicit_namespace_pkgs": False, "environment": {}, "extra_pip_args": [], "isolated": True, "pip_data_exclude": [], "python_interpreter": "python3", "python_interpreter_target": interpreter, "quiet": True, "repo": "pip", "repo_prefix": "pip_", "timeout": 600}
_annotations = {}

def requirement(name):
    return "@pip//{}:{}".format(pip_utils.normalize_name(name), "pkg")

def whl_requirement(name):
    return "@pip//{}:{}".format(pip_utils.normalize_name(name), "whl")

def data_requirement(name):
    return "@pip//{}:{}".format(pip_utils.normalize_name(name), "data")

def dist_info_requirement(name):
    return "@pip//{}:{}".format(pip_utils.normalize_name(name), "dist_info")

def entry_point(pkg, script = None):
    if not script:
        script = pkg
    return "@pip_" + 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 = {}

    requirement_group_mapping = {
        requirement: group_name
        for group_name, group_requirements in all_requirement_groups.items()
        for requirement in group_requirements
    }

    group_repo = "pip__groups"
    group_library(
        name = group_repo,
        repo_prefix = "pip_",
        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("pip_", ""))
        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
        )