| 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", |
| ], |
| ) |