xref: /aosp_15_r20/external/bazelbuild-rules_python/gazelle/python/BUILD.bazel (revision 60517a1edbc8ecf509223e9af94a7adec7d736b8)
1load("@bazel_gazelle//:def.bzl", "gazelle_binary")
2load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
3load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
4load(":gazelle_test.bzl", "gazelle_test")
5
6go_library(
7    name = "python",
8    srcs = [
9        "configure.go",
10        "file_parser.go",
11        "fix.go",
12        "generate.go",
13        "kinds.go",
14        "language.go",
15        "parser.go",
16        "resolve.go",
17        "std_modules.go",
18        "target.go",
19    ],
20    # NOTE @aignas 2023-12-03: currently gazelle does not support embedding
21    # generated files, but 3.11.txt is generated by a build rule.
22    #
23    # You will get a benign error like when running gazelle locally:
24    # > 8 gazelle: .../rules_python/gazelle/python/std_modules.go:24:3: pattern 3.11.txt: matched no files
25    #
26    # See following for more info:
27    # https://github.com/bazelbuild/bazel-gazelle/issues/1513
28    embedsrcs = ["stdlib_list.txt"],  # keep # TODO: use user-defined version?
29    importpath = "github.com/bazelbuild/rules_python/gazelle/python",
30    visibility = ["//visibility:public"],
31    deps = [
32        "//manifest",
33        "//pythonconfig",
34        "@bazel_gazelle//config:go_default_library",
35        "@bazel_gazelle//label:go_default_library",
36        "@bazel_gazelle//language:go_default_library",
37        "@bazel_gazelle//repo:go_default_library",
38        "@bazel_gazelle//resolve:go_default_library",
39        "@bazel_gazelle//rule:go_default_library",
40        "@com_github_bazelbuild_buildtools//build:go_default_library",
41        "@com_github_bmatcuk_doublestar_v4//:doublestar",
42        "@com_github_emirpasic_gods//lists/singlylinkedlist",
43        "@com_github_emirpasic_gods//sets/treeset",
44        "@com_github_emirpasic_gods//utils",
45        "@com_github_smacker_go_tree_sitter//:go-tree-sitter",
46        "@com_github_smacker_go_tree_sitter//python",
47        "@org_golang_x_sync//errgroup",
48    ],
49)
50
51copy_file(
52    name = "stdlib_list",
53    src = select(
54        {
55            "@rules_python//python/config_settings:is_python_3.10": "@python_stdlib_list//:stdlib_list/lists/3.10.txt",
56            "@rules_python//python/config_settings:is_python_3.11": "@python_stdlib_list//:stdlib_list/lists/3.11.txt",
57            "@rules_python//python/config_settings:is_python_3.12": "@python_stdlib_list//:stdlib_list/lists/3.12.txt",
58            "@rules_python//python/config_settings:is_python_3.8": "@python_stdlib_list//:stdlib_list/lists/3.8.txt",
59            "@rules_python//python/config_settings:is_python_3.9": "@python_stdlib_list//:stdlib_list/lists/3.9.txt",
60            # This is the same behaviour as previously
61            "//conditions:default": "@python_stdlib_list//:stdlib_list/lists/3.11.txt",
62        },
63    ),
64    out = "stdlib_list.txt",
65    allow_symlink = True,
66)
67
68# gazelle:exclude testdata/
69
70gazelle_test(
71    name = "python_test",
72    srcs = ["python_test.go"],
73    data = [
74        ":gazelle_binary",
75    ],
76    test_dirs = glob(
77        # Use this so that we don't need to manually maintain the list.
78        ["testdata/*"],
79        exclude = ["testdata/*.md"],
80        # The directories aren't inputs themselves; we just want their
81        # names.
82        exclude_directories = 0,
83    ),
84    deps = [
85        "@bazel_gazelle//testtools:go_default_library",
86        "@com_github_ghodss_yaml//:yaml",
87        "@io_bazel_rules_go//go/runfiles:go_default_library",
88        "@io_bazel_rules_go//go/tools/bazel:go_default_library",
89    ],
90)
91
92gazelle_binary(
93    name = "gazelle_binary",
94    languages = [":python"],
95    visibility = ["//visibility:public"],
96)
97
98filegroup(
99    name = "distribution",
100    srcs = glob(["**"]),
101    visibility = ["//:__pkg__"],
102)
103
104go_test(
105    name = "default_test",
106    srcs = [
107        "file_parser_test.go",
108        "std_modules_test.go",
109    ],
110    embed = [":python"],
111    deps = [
112        "@com_github_stretchr_testify//assert",
113    ],
114)
115