| 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/bazel-contrib/rules_python/gazelle/python", | |
| visibility = ["//visibility:public"], | |
| deps = [ | |
| "//pythonconfig", | |
| "@bazel_gazelle//config", | |
| "@bazel_gazelle//label", | |
| "@bazel_gazelle//language", | |
| "@bazel_gazelle//repo", | |
| "@bazel_gazelle//resolve", | |
| "@bazel_gazelle//rule", | |
| "@com_github_bazelbuild_buildtools//build", | |
| "@com_github_bmatcuk_doublestar_v4//:doublestar", | |
| "@com_github_emirpasic_gods//lists/singlylinkedlist:go_default_library", | |
| "@com_github_emirpasic_gods//sets/treeset:go_default_library", | |
| "@com_github_emirpasic_gods//utils:go_default_library", | |
| "@com_github_smacker_go_tree_sitter//:go_default_library", | |
| "@com_github_smacker_go_tree_sitter//python:go_default_library", | |
| "@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.13": "@python_stdlib_list//:stdlib_list/lists/3.13.txt", | |
| "@rules_python//python/config_settings:is_python_3.14": "@python_stdlib_list//:stdlib_list/lists/3.14.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", | |
| # Fall back to the latest stdlib list | |
| "//conditions:default": "@python_stdlib_list//:stdlib_list/lists/3.14.txt", | |
| }, | |
| ), | |
| out = "stdlib_list.txt", | |
| allow_symlink = True, | |
| ) | |
| # gazelle:exclude testdata/ | |
| # gazelle:exclude extensions.bzl | |
| # Exclude test-only Starlark helper from Gazelle to avoid generating an unnecessary bzl_library | |
| # gazelle:exclude gazelle_test.bzl | |
| gazelle_test( | |
| name = "python_test", | |
| srcs = ["python_test.go"], | |
| data = [ | |
| ":_gazelle_binary_with_proto", | |
| ":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"], | |
| ) | |
| # Only used by testing | |
| gazelle_binary( | |
| name = "_gazelle_binary_with_proto", | |
| languages = [ | |
| "@bazel_gazelle//language/proto", | |
| ":python", | |
| ], | |
| visibility = ["//visibility:private"], | |
| ) | |
| 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", | |
| ], | |
| ) |