blob: 627a867c682964768b4500de093beca16083d481 [file] [log] [blame]
load("@bazel_gazelle//:def.bzl", "gazelle_binary")
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
load(":gazelle_test.bzl", "gazelle_test")
go_library(
name = "python",
srcs = [
"configure.go",
"file_parser.go",
"fix.go",
"generate.go",
"kinds.go",
"language.go",
"parser.go",
"resolve.go",
"std_modules.go",
"target.go",
],
# NOTE @aignas 2023-12-03: currently gazelle does not support embedding
# generated files, but 3.11.txt is generated by a build rule.
#
# You will get a benign error like when running gazelle locally:
# > 8 gazelle: .../rules_python/gazelle/python/std_modules.go:24:3: pattern 3.11.txt: matched no files
#
# See following for more info:
# https://github.com/bazelbuild/bazel-gazelle/issues/1513
embedsrcs = ["stdlib_list.txt"], # keep # TODO: use user-defined version?
importpath = "github.com/bazelbuild/rules_python/gazelle/python",
visibility = ["//visibility:public"],
deps = [
"//manifest",
"//pythonconfig",
"@bazel_gazelle//config:go_default_library",
"@bazel_gazelle//label:go_default_library",
"@bazel_gazelle//language:go_default_library",
"@bazel_gazelle//repo:go_default_library",
"@bazel_gazelle//resolve:go_default_library",
"@bazel_gazelle//rule:go_default_library",
"@com_github_bazelbuild_buildtools//build:go_default_library",
"@com_github_bmatcuk_doublestar_v4//:doublestar",
"@com_github_emirpasic_gods//lists/singlylinkedlist",
"@com_github_emirpasic_gods//sets/treeset",
"@com_github_emirpasic_gods//utils",
"@com_github_smacker_go_tree_sitter//:go-tree-sitter",
"@com_github_smacker_go_tree_sitter//python",
"@org_golang_x_sync//errgroup",
],
)
copy_file(
name = "stdlib_list",
src = select(
{
"@rules_python//python/config_settings:is_python_3.10": "@python_stdlib_list//:stdlib_list/lists/3.10.txt",
"@rules_python//python/config_settings:is_python_3.11": "@python_stdlib_list//:stdlib_list/lists/3.11.txt",
"@rules_python//python/config_settings:is_python_3.12": "@python_stdlib_list//:stdlib_list/lists/3.12.txt",
"@rules_python//python/config_settings:is_python_3.8": "@python_stdlib_list//:stdlib_list/lists/3.8.txt",
"@rules_python//python/config_settings:is_python_3.9": "@python_stdlib_list//:stdlib_list/lists/3.9.txt",
# This is the same behaviour as previously
"//conditions:default": "@python_stdlib_list//:stdlib_list/lists/3.11.txt",
},
),
out = "stdlib_list.txt",
allow_symlink = True,
)
# gazelle:exclude testdata/
gazelle_test(
name = "python_test",
srcs = ["python_test.go"],
data = [
":gazelle_binary",
],
test_dirs = glob(
# Use this so that we don't need to manually maintain the list.
["testdata/*"],
exclude = ["testdata/*.md"],
# The directories aren't inputs themselves; we just want their
# names.
exclude_directories = 0,
),
deps = [
"@bazel_gazelle//testtools:go_default_library",
"@com_github_ghodss_yaml//:yaml",
"@io_bazel_rules_go//go/runfiles:go_default_library",
"@io_bazel_rules_go//go/tools/bazel:go_default_library",
],
)
gazelle_binary(
name = "gazelle_binary",
languages = [":python"],
visibility = ["//visibility:public"],
)
filegroup(
name = "distribution",
srcs = glob(["**"]),
visibility = ["//:__pkg__"],
)
go_test(
name = "default_test",
srcs = [
"file_parser_test.go",
"std_modules_test.go",
],
embed = [":python"],
deps = [
"@com_github_stretchr_testify//assert",
],
)