aboutsummaryrefslogtreecommitdiff
path: root/examples/pip_parse/BUILD.bazel
blob: 367a795728390f3a2eaaeef70e31a1308acec7dd (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
load("@rules_python//python:defs.bzl", "py_binary", "py_test")
load("@rules_python//python:pip.bzl", "compile_pip_requirements")
load("@rules_python//python/entry_points:py_console_script_binary.bzl", "py_console_script_binary")

# Toolchain setup, this is optional.
# Demonstrate that we can use the same python interpreter for the toolchain and executing pip in pip install (see WORKSPACE).
#
#load("@rules_python//python:defs.bzl", "py_runtime_pair")
#
#py_runtime(
#    name = "python3_runtime",
#    files = ["@python_interpreter//:files"],
#    interpreter = "@python_interpreter//:python_bin",
#    python_version = "PY3",
#    visibility = ["//visibility:public"],
#)
#
#py_runtime_pair(
#    name = "my_py_runtime_pair",
#    py2_runtime = None,
#    py3_runtime = ":python3_runtime",
#)
#
#toolchain(
#    name = "my_py_toolchain",
#    toolchain = ":my_py_runtime_pair",
#    toolchain_type = "@bazel_tools//tools/python:toolchain_type",
#)
# End of toolchain setup.

py_binary(
    name = "main",
    srcs = ["main.py"],
    deps = [
        "@pypi//requests:pkg",
        "@pypi//sphinx:pkg",
        "@pypi//sphinxcontrib_serializinghtml:pkg",
    ],
)

py_test(
    name = "test",
    srcs = ["test.py"],
    deps = [":main"],
)

# For pip dependencies which have entry points, the `entry_point` macro can be
# used from the generated `pip_parse` repository to access a runnable binary.

py_console_script_binary(
    name = "yamllint",
    pkg = "@pypi//yamllint",
)

# This rule adds a convenient way to update the requirements file.
compile_pip_requirements(
    name = "requirements",
    src = "requirements.in",
    requirements_txt = "requirements_lock.txt",
    requirements_windows = "requirements_windows.txt",
)

# Test the use of all pip_parse utilities in a single py_test
py_test(
    name = "pip_parse_test",
    srcs = ["pip_parse_test.py"],
    data = [
        ":yamllint",
        "@pypi//requests:dist_info",
        "@pypi//s3cmd:data",
    ],
    env = {
        "WHEEL_DATA_CONTENTS": "$(rootpaths @pypi//s3cmd:data)",
        "WHEEL_DIST_INFO_CONTENTS": "$(rootpaths @pypi//requests:dist_info)",
        "YAMLLINT_ENTRY_POINT": "$(rlocationpath :yamllint)",
    },
    deps = ["@rules_python//python/runfiles"],
)